2011-08-29 78 views
1

我想在mysql表中选择对ticket_id的重复条目的最新条目,我的当前是这样的。Mysql选择重复行之一

SELECT * , 
     COUNT(*) AS cnt , 
     ticket_id 
FROM temp_tickets 
GROUP BY ticket_id 
ORDER BY id DESC 

它给出的次一排被复制的号码,但我能够选择那些mulptiple行

让说我有最新一个3 TICKET_ID的这得到了重复5次,现在我想从所有这3个ID中选择最新的事件。

让我知道我是否必须更具体。

感谢

+0

而你仍然需要'COUNT'以及在同一个查询?或者你只是想为每组重复中的最新条目设置一个结果集? –

+0

@马丁最新的所有dulpicate集 – Shanon

回答

5

这里的(假设“最新”的意思是“最伟大的ID”)

SELECT temp_tickets.* 
FROM temp_tickets 
     JOIN (SELECT MAX(id) AS id 
       FROM  temp_tickets 
       GROUP BY ticket_id 
       HAVING COUNT(*) > 1 
      ) latest ON latest.id = temp_tickets.id  

我怀疑有可能拿出更有效的解决方案involving user variables但我会离开的一种方式那对别人...

0
SELECT distinct * 
FROM temp_tickets 
GROUP BY ticket_id 
ORDER BY id DESC 
+2

请描述为什么你的答案可以解决这个问题? – Ibrahim

+0

当您指定SELECT DISTINCT时,它将为您提供所有行,从而消除结果集中的重复项。 “重复”是指所有字段具有相同值的行。 – gowtham