为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

不负相思意 2019-07-11 15:37:51
SQL/MySQL-选择不同/唯一但返回所有列?SELECT DISTINCT field1, field2, field3, ......   FROM table我正在尝试完成以下SQL语句,但我希望它返回所有列,这可能吗?类似于:SELECT DISTINCT field1, * from table
查看完整描述

3 回答

?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

从您问题的措辞来看,我了解到您希望为给定字段选择不同的值,并将所有其他列值列在同一行中。大多数dbms都不允许这样做。DISTINCT也不GROUP BY,因为结果尚未确定。

把它想成这样:如果你field1发生不止一次,它的值是多少?field2将被列出(假设您的值与field1在两行中,但有两个不同的值。field2在这两行中)。

但是,您可以使用聚合函数(对您想要显示的每个字段进行解释),并使用GROUP BY而不是DISTINCT:

SELECT field1, MAX(field2), COUNT(field3), SUM(field4), .... FROM table GROUP BY field1



查看完整回答
反对 回复 2019-07-11
?
守候你守候我

TA贡献1802条经验 获得超10个赞

如果我正确地理解了你的问题,这和我刚才遇到的问题很相似。您希望能够将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分组,结果中将省略其中一个人。你需要考虑这些事情。希望这能帮上忙。


查看完整回答
反对 回复 2019-07-11
  • 3 回答
  • 0 关注
  • 999 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信