MySQL 5.5 SELECT DISTINCT - 如何返回多个没有查询重复的列?

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.

Eri*_*ric 5

你想要一个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),您可以指定要区分的列,同时聚合其他列以提供您正在查找的结果集.