在sql中使用distinct

时间:2016-04-05 10:10:07

标签: mysql sql distinct

任何人都可以告诉我如何选择与person_id一起使用的唯一fruit_name 我写了查询,但它给出了错误。

我的查询:

select person_id,distinct fruit_name from person_fruit;

表:

enter image description here

提前致谢!

2 个答案:

答案 0 :(得分:3)

DISTINCT始终适用于所有列。在标准SQL中,它必须直接放在SELECT之后(实际上默认为SELECT ALL),您的语法无效标准SQL。

您必须定义要返回的ID,因为每个水果有多个ID。

在您的情况下,您只需切换到GROUP BY:

select min(person_id), -- or MAX
   fruit_name 
from person_fruit
group by fruit_name;

这适用于所有DBMS,而不仅仅适用于较旧的MySQL版本(我真的很喜欢MySQL最终遵循标准,当然这会给MySQL开发人员带来很多困惑)。

答案 1 :(得分:2)

根据您选择的所有列,您无法根据单个列获取不同的行,因为您可以使用group by -

select person_id,fruit_name from person_fruit group by fruit_name;

以下查询将根据两列的组合为您提供不同的行。

select distinct person_id, fruit_name from person_fruit;