我的记录如下:
key | name
--------------
1111 | aa
1111 | bb
2222 | cc
当值不同时,我需要选择key
and 。当我尝试时:name
key
select distinct key, name from table;
我得到了所有的行,因为查询对列的组合不同:key
和name
。但是,我需要的只是不同的key
,我不关心name
. 我有很多记录,所以我需要一个实用的方法。
我的记录如下:
key | name
--------------
1111 | aa
1111 | bb
2222 | cc
当值不同时,我需要选择key
and 。当我尝试时:name
key
select distinct key, name from table;
我得到了所有的行,因为查询对列的组合不同:key
和name
。但是,我需要的只是不同的key
,我不关心name
. 我有很多记录,所以我需要一个实用的方法。
询问:
SELECT `key`, MAX(`name`) as name
FROM `table`
GROUP BY `key`
为什么不只是:
SELECT distinct key
FROM table
或者
SELECT key, name
FROM table
GROUP BY key
SELECT key, name FROM table GROUP BY key;
这将为 的每个不同值返回一行key
,并且 的值name
是从该组中的行中任意选择的。在实践中,MySQL 倾向于从物理存储在组中的第一个行中返回 name 的值,但这并不能保证。
正如其他答案所示,您可以将 name 放入聚合表达式中。
如果您不关心未分组的字段,请尝试此查询 -
select key, name from table group by key order by name
MySQL 允许在不使用聚合函数的情况下选择字段。
按名称排序有助于从组中选择名字。
这个怎么样:
select * from table group by key having count(key) = 1