2013-11-27 113 views
0

我想從表中選擇唯一的唯一行,有人可以幫我嗎?mysql只選擇唯一的行

SELECT * FROM table 
where to_user = ? 
and deleted != ? 
and del2 != ? 
and is_read = '0' 
    order by id desc 


+----+-----+------+ 
| id | message_id | 
+----+-----+------+ 
| 1 | 23   | 
| 2 | 23   | 
| 3 | 23   | 
| 4 | 24   | 
| 5 | 25   | 
+----+-----+------+ 

我需要這樣的東西

+----+-----+------+ 
| id | message_id | 
+----+-----+------+ 
| 3 | 23   | 
| 4 | 24   | 
| 5 | 25   | 
+----+-----+------+ 
+0

所以,你只需要一個特定的'message_id'最大的'ID'? – SWeko

+0

@SWeko如果'message_id'類似我只想要最後一個。 – user3006683

+0

如果* *類似*意思是*相同*,最後一個是最大的一個,那麼我的或阿齊茲的答案就可以做到這一點。 – SWeko

回答

4

試試這個:

SELECT MAX(id), message_id 
FROM tablename 
GROUP BY message_id 

,如果您有其他的領域則:

SELECT MAX(id), message_id 
FROM tablename 
WHERE to_user = ? 
AND deleted != ? 
AND del2 != ? 
AND is_read = '0' 
GROUP BY message_id 
ORDER BY id DESC 
+0

感謝工作,我會過一會兒。 – user3006683

1

如果你只需要最大的ID對於特定的message_id

SELECT max(id), message_id FROM table 
where to_user = ? 
and deleted != ? 
and del2 != ? 
and is_read = '0' 
group by message_id 
    order by id desc 
-1

嘗試DISTINCT關鍵字。這將工作肯定:

SELECT DISTINCT(message_id), id FROM table;