2013-11-27 71 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;