从MySQL获取具有唯一列值的集合

时间:2014-07-22 11:31:59

标签: mysql sql group-by unique distinct

假设我有一个像这样的列

的集合
user_id | username | updated_at | data...

user_idusername在集合中不是唯一的,因此您可以拥有类似的内容

user_id | username | updated_at | data...
------------------------------------------
   1    |   test   |  140****** | ...  
   4    |   test2  |  140****** | ...  
   1    |   test   |  139****** | ...  
   7    |   meh    |  140****** | ...   

但我想删除重复的事件;我尝试了GROUP BY但是它给了我一些意想不到的东西,因为很多项目都被删除了(我猜它们会出现在集合的后面,因为查询中有一个LIMIT)。

2 个答案:

答案 0 :(得分:1)

如果您需要选择所有数据 - 首先,您应该决定如何获取updated_at和数据列。

如果您想要连接数据并且想要拥有最新的updated_at,那么

SELECT user_id, username, max(updated_at), group_concat(data separator ',')
FROM table_name
GROUP BY user_id, username
ORDER BY user_id, username
LIMIT X

在这种情况下,您的数据将按user_id和用户名

排序

注意: 从您的问题中不清楚是否要从表本身或仅从结果集中删除数据。

答案 1 :(得分:0)

这是你想要的吗?

select distinct user_id, username
from table t;