Bin*_*min 1 mysql sql select distinct
似乎在MySQL 5.5上SELECT DISTINCT工作正常只有一列.
SELECT DISTINCT type FROM table
WHERE type LIKE 'h%'
LIMIT 5;
Run Code Online (Sandbox Code Playgroud)
返回好结果:
type
--------
htm
html
htaccess
Run Code Online (Sandbox Code Playgroud)
但是在尝试SELECT两列或更多列时
SELECT DISTINCT id, type FROM table
WHERE type LIKE 'h%'
LIMIT 5;
Run Code Online (Sandbox Code Playgroud)
它返回重复查询失败的结果:
id | type
---+--------
1 | htm
3 | htm
5 | html
6 | html
7 | html
Run Code Online (Sandbox Code Playgroud)
预期结果:
id | type
---+--------
3 | htm
7 | html
5 | htaccess
Run Code Online (Sandbox Code Playgroud)
列id没有必要申请DISTINCT,因为它有AUTO_INCREMENT.
你想要一个group by:
select
max(id) as id,
type
from
table
where type like 'h%'
group by type
Run Code Online (Sandbox Code Playgroud)
distinct获取distinct行 - 这意味着除非每列中的每个值都与结果集中已有的行相同,否则它将显示该行.在这种情况下,它的行为与描述完全相同.
通过执行group by和使用聚合函数(例如max),您可以指定要区分的列,同时聚合其他列以提供您正在查找的结果集.