似乎在 MySQL 5.5 上 SELECT DISTINCT
只用一列就可以正常工作。
SELECT DISTINCT type FROM table
WHERE type LIKE 'h%'
LIMIT 5;
返回好的结果:
type
--------
htm
html
htaccess
但是在尝试 SELECT
两列或更多列时
SELECT DISTINCT id, type FROM table
WHERE type LIKE 'h%'
LIMIT 5;
它返回带有重复查询的失败结果:
id | type
---+--------
1 | htm
3 | htm
5 | html
6 | html
7 | html
预期结果:
id | type
---+--------
3 | htm
7 | html
5 | htaccess
列 id
不需要应用 DISTINCT
,因为它有 AUTO_INCREMENT
。
最佳答案
你想要一个group by
:
select
max(id) as id,
type
from
table
where type like 'h%'
group by type
distinct
获取 distinct
行——这意味着除非 every 列中的 every 值相同作为结果集中已有的一行,它将显示该行。在这种情况下,它的行为与描述的完全一致。
通过执行分组依据
并使用聚合函数(如max
),您可以指定要区分的列,同时聚合其他列为您提供您正在寻找的结果集。
关于MySQL 5.5 SELECT DISTINCT - 如何返回多个没有查询重复的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8673823/