选择DISTINCT,返回整行

Nin*_*Cat 8 sql sql-server

我有一个10列的表.我想返回Col006不同的所有行,但返回所有列...

我怎样才能做到这一点?

如果第6列显示如下:

| Column 6 |
| item1    | 
| item1    | 
| item2    | 
| item1    | 
Run Code Online (Sandbox Code Playgroud)

我想返回两行,其中一个记录包含item1,另一个记录包含item2,以及所有其他列.

Qua*_*noi 9

SQL Server 2005与上述:

;WITH    q AS
        (
        SELECT  *, ROW_NUMBER() OVER (PARTITION BY col6 ORDER BY id) rn
        FROM    mytable
        )
SELECT  *
FROM    q
WHERE   rn = 1
Run Code Online (Sandbox Code Playgroud)

SQL Server 2000,只要您有主键列:

SELECT  mt.*
FROM    (
        SELECT  DISTINCT col6
        FROM    mytable
        ) mto
JOIN    mytable mt
ON      mt.id = 
        (
        SELECT  TOP 1 id
        FROM    mytable mti
        WHERE   mti.col6 = mto.col6
        -- ORDER BY
        --      id
        --  Uncomment the lines above if the order matters
        )
Run Code Online (Sandbox Code Playgroud)

更新:

检查数据库版本和兼容级别:

SELECT  @@VERSION

SELECT  COMPATIBILITY_LEVEL
FROM    sys.databases
WHERE   name = DB_NAME()
Run Code Online (Sandbox Code Playgroud)