7

我的记录如下:

key  | name
--------------
1111 | aa   
1111 | bb    
2222 | cc

当值不同时,我需要选择keyand 。当我尝试时:namekey

select distinct key, name from table;

我得到了所有的行,因为查询对列的组合不同:keyname。但是,我需要的只是不同的key,我不关心name. 我有很多记录,所以我需要一个实用的方法。

4

5 回答 5

12

询问:

SELECT `key`, MAX(`name`) as name
FROM `table`
GROUP BY `key`
于 2012-12-12T20:42:46.180 回答
3

为什么不只是:

SELECT distinct key
FROM table

或者

SELECT key, name
FROM table
GROUP BY key
于 2012-12-12T20:45:12.603 回答
0
SELECT key, name FROM table GROUP BY key;

这将为 的每个不同值返回一行key,并且 的值name是从该组中的行中任意选择的。在实践中,MySQL 倾向于从物理存储在组中的第一个行中返回 name 的值,但这并不能保证。

正如其他答案所示,您可以将 name 放入聚合表达式中。

于 2012-12-12T20:43:24.413 回答
0

如果您不关心未分组的字段,请尝试此查询 -

select key, name from table group by key order by name

MySQL 允许在不使用聚合函数的情况下选择字段。

按名称排序有助于从组中选择名字。

于 2012-12-12T20:44:37.967 回答
0

这个怎么样:

select * from table group by key having count(key) = 1
于 2012-12-12T20:47:12.713 回答