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