SELECT DISTINCT field1, field2, field3, ......
FROM table;

我试图完成以下SQL语句,但我希望它返回所有列。 这可能吗?

就像这样:

SELECT DISTINCT field1, * 
FROM table;

当前回答

这样只需要1个查询就可以得到2个唯一的列 select Distinct col1,col2 from '{path}' group by col1,col2 如果需要,可以增加列

其他回答

这是一个简单的解决方法:

 WITH cte AS /* Declaring a new table named 'cte' to be a clone of your table */
 (SELECT *, ROW_NUMBER() OVER (PARTITION BY id ORDER BY val1 DESC) AS rn
 FROM MyTable /* Selecting only unique values based on the "id" field */
 )
 SELECT * /* Here you can specify several columns to retrieve */
 FROM cte
 WHERE rn = 1
SELECT * from table where field in (SELECT distinct field from table)

这样只需要1个查询就可以得到2个唯一的列 select Distinct col1,col2 from '{path}' group by col1,col2 如果需要,可以增加列

SELECT  c2.field1 ,
        field2
FROM    (SELECT DISTINCT
                field1
         FROM   dbo.TABLE AS C
        ) AS c1
        JOIN dbo.TABLE AS c2 ON c1.field1 = c2.field1

如果我没理解错的话,你的问题和我刚才遇到的问题很相似。您希望能够将DISTINCT的可用性限制在指定的字段,而不是将其应用于所有数据。

如果你使用GROUP BY而没有聚合函数,你GROUP BY的字段将是你的DISTINCT字段。

如果你有疑问:

SELECT * from table GROUP BY field1;

它将显示基于field1的单个实例的所有结果。

例如,如果您有一个包含名称、地址和城市的表。一个人有多个地址记录,但你只想要这个人的一个地址,你可以这样查询:

SELECT * FROM persons GROUP BY name;

结果将是该名称的一个实例及其地址将出现,而另一个实例将从结果表中被省略。注意:如果你的字段有原子值,如firstName, lastName,你想要分组。

SELECT * FROM persons GROUP BY lastName, firstName;

因为如果两个人有相同的姓氏,而你只按姓氏分组,那么其中一个人将从结果中被忽略。你需要考虑到这些事情。希望这能有所帮助。