猿问

SQL/MySQL-选择不同/唯一但返回所有列?

SQL/MySQL-选择不同/唯一但返回所有列?

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

我正在尝试完成以下SQL语句,但我希望它返回所有列,这可能吗?类似于:

SELECT DISTINCT field1, * from table


不负相思意
浏览 1000回答 3
3回答

江户川乱折腾

从您问题的措辞来看,我了解到您希望为给定字段选择不同的值,并将所有其他列值列在同一行中。大多数dbms都不允许这样做。DISTINCT也不GROUP BY,因为结果尚未确定。把它想成这样:如果你field1发生不止一次,它的值是多少?field2将被列出(假设您的值与field1在两行中,但有两个不同的值。field2在这两行中)。但是,您可以使用聚合函数(对您想要显示的每个字段进行解释),并使用GROUP BY而不是DISTINCT:SELECT field1, MAX(field2), COUNT(field3), SUM(field4), .... FROM table GROUP BY field1

守候你守候我

如果我正确地理解了你的问题,这和我刚才遇到的问题很相似。您希望能够将DISTION的可用性限制在指定的字段上,而不是将其应用于所有数据。如果您使用GROUP BY而没有聚合函数,那么任何时候您分组的字段都将是您的不同字段。如果您进行查询:SELECT * from table GROUP BY field1;它将显示基于字段1的单个实例的所有结果。例如,如果您有一个具有名称、地址和城市的表。一个人有多个被记录的地址,但是你只想要一个人的一个地址,你可以查询如下:SELECT * FROM persons GROUP BY name;结果将只出现一个该名称的实例及其地址,而另一个实例将从结果表中省略。警告:如果您的文件具有原子值,如FirstName,则要同时按两者对LASTNAME进行分组。SELECT * FROM persons GROUP BY lastName, firstName;因为如果两个人的姓氏相同,而您只按LASTNAME分组,结果中将省略其中一个人。你需要考虑这些事情。希望这能帮上忙。
随时随地看视频慕课网APP
我要回答