在一列上选择DISTINCT,返回多个列

时间:2014-06-19 11:00:11

标签: sql sql-server sql-server-2008

我有一个包含20列的数据库,但在我的选择中我只想要以下3列:

任务 唯一身份 MessageID(唯一标识符)

如何在返回上述3列时获得所有不同的UniqueID。

SELECT DISTINCT(UniqueID), Task, MessageID

似乎不起作用? :/

2 个答案:

答案 0 :(得分:1)

DISTINCT不是函数:

SELECT DISTINCT UniqueID
     , Task
     , MessageID 
FROM table

但这将返回所有唯一而非唯一UniqueID。如果您只想检索具有不同UniqueID的行,则应使用GROUP BY子句并使用字段TaskMessageID汇总函数来操作分组数据。

答案 1 :(得分:0)

尝试类似: -

SELECT task,
       UniqueID,
       MessageID,
FROM   (SELECT task,
               UniqueID,
               MessageID,
               Row_number() OVER(PARTITION BY UniqueID ORDER BY MessageID) rn
        FROM   TableName) t
WHERE  rn = 1