2013-11-27 3 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

Значит, вам нужен только самый большой 'id' для определенного 'message_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

Если вам нужен только самый большой идентификатор для конкретного 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; 
Смежные вопросы