[MySQL] выбор неповторяющихся значений по одному полю

vlfdimir58

Задача: Есть табличка:

id | field1 | field2
1 | foo | bar
2 | foo | tar
3 | boo | gar
4 | foo | rar
5 | boo | mar

если в field1 есть повторяющиеся значения, то нужно вывести только те строки, в которых id наибольший
То есть для указанного примера надо вывести:

id | field1 | field2
4 | foo | rar
5 | boo | mar

Реально ли такое только средствами MySQL. И если да, то как?

Dasar

select max(id field1
from table
group by field1
далее подцепляешь остальное

vlfdimir58

Я малясь запутался. Укзанная табличка получается через
SELECT posts . post_id ,  topics . topic_title , posts . forum_id , forums . forum_name 
FROM `posts`
LEFT JOIN `topics` USING (topic_id)
LEFT JOIN `forums` USING (forum_id)
ORDER BY `posts` . `post_id` ASC

И мне надо, чтобы в роли field1 здесь был topics.topics_title, а в роли id - posts.post_id
Как лучше делать?

evgen5555

SELECT 
max(posts.post_id
topics.topic_title,
posts.forum_id,
forums.forum_name
FROM `posts`
LEFT JOIN
`topics`
USING
(topic_id)
LEFT JOIN
`forums`
USING
(forum_id)
ORDER BY `posts`.`post_id`
GROUP BY topics.topic_title
ASC

Так, что ле?

vlfdimir58

так ошибка получается. надо order и group местами менять, но тогда я не понимаю как сортировку делать
SELECT MAX( posts.post_id ) , topics.topic_title, posts.forum_id, forums.forum_name
FROM `posts`
LEFT JOIN `topics`
USING ( topic_id )
LEFT JOIN `forums`
USING ( forum_id )
GROUP BY topics.topic_title
ORDER BY posts.post_id ASC

не сортирует.

vlfdimir58

решил.
спасибо всем большое.
SELECT MAX( posts.post_id ) AS `id` , topics.topic_title, posts.forum_id, forums.forum_name
FROM `posts`
LEFT JOIN `topics`
USING ( topic_id )
LEFT JOIN `forums`
USING ( forum_id )
GROUP BY topics.topic_title
ORDER BY `id` ASC

Marinavo_0507

id уникальный?
тогда так можно:

CREATE TEMPORARY TABLE tmp1
SELECT max(id) AS tmp_id FROM table1
GROUP BY field1;
SELECT id, field1, field2 FROM table1, tmp1
WHERE tmp_id=id;
DROP TABLE tmp1;

если нужна транзакция, то можно чуть переделать
Оставить комментарий
Имя или ник:
Комментарий: