在 sql 中使用 distinct
use of distinct in sql
谁能告诉我如何才能 select 独一无二 fruit_name 以及 person_id
我写了查询,但它给出了错误。
我的查询:
select person_id,distinct fruit_name from person_fruit;
Table:
提前致谢!
您无法基于单列获得不同的行,因为不同的提供基于您选择的所有列的唯一性,您可以使用分组依据-
select person_id,fruit_name from person_fruit group by fruit_name;
下面的查询将根据两列的组合为您提供不同的行。
select distinct person_id, fruit_name from person_fruit;
DISTINCT
始终适用于所有列。在 Standard SQL 中它必须直接放在 SELECT
之后(实际上默认是 SELECT ALL
),你的语法是无效的 Standard SQL.
您必须定义要使用的 ID return,因为每个水果有多个 ID。
在你的情况下,你可以简单地切换到 GROUP BY:
select min(person_id), -- or MAX
fruit_name
from person_fruit
group by fruit_name;
这适用于所有 DBMS 而不仅仅是旧的 MySQL 版本(我真的很喜欢 MySQL 终于遵循了标准,当然这会给 MySQL 带来很多混乱开发人员)。
谁能告诉我如何才能 select 独一无二 fruit_name 以及 person_id 我写了查询,但它给出了错误。
我的查询:
select person_id,distinct fruit_name from person_fruit;
Table:
提前致谢!
您无法基于单列获得不同的行,因为不同的提供基于您选择的所有列的唯一性,您可以使用分组依据-
select person_id,fruit_name from person_fruit group by fruit_name;
下面的查询将根据两列的组合为您提供不同的行。
select distinct person_id, fruit_name from person_fruit;
DISTINCT
始终适用于所有列。在 Standard SQL 中它必须直接放在 SELECT
之后(实际上默认是 SELECT ALL
),你的语法是无效的 Standard SQL.
您必须定义要使用的 ID return,因为每个水果有多个 ID。
在你的情况下,你可以简单地切换到 GROUP BY:
select min(person_id), -- or MAX
fruit_name
from person_fruit
group by fruit_name;
这适用于所有 DBMS 而不仅仅是旧的 MySQL 版本(我真的很喜欢 MySQL 终于遵循了标准,当然这会给 MySQL 带来很多混乱开发人员)。