MySQL « MySQL Выборка двух полей, одно из которых возвращает только уникальные записи
Пытаюсь сделать запрос в БД: взять vid_id и name, но vid_id повторяется, а должны быть только уникальные записи. Есть два ограничения:
1. нельзя делать вложенные запросы.
2. Данные нужно получить одним запросом
Пробовал DISTINCT - не помогло, а точнее работает как нужно пока делаю выборку только vid_id. Гугл тоже не помог.
1. нельзя делать вложенные запросы.
2. Данные нужно получить одним запросом
Пробовал DISTINCT - не помогло, а точнее работает как нужно пока делаю выборку только vid_id. Гугл тоже не помог.
1 ответов
select name, vid_id from table1 group by
vid_id
вернет набор записей, в котором каждое значение name уникальное. vid_id в данном случае будет любым из набора vid_id, соответсвующих данному name.
Тогда так наверное
select a.name, a.vid_id from
table1 a
INNER JOIN
(select vid_id, count(*) AS cnt from table1 group by vid_id HAVING cnt = 1)b ON b.vid_id = a.vid_id
вернет набор записей, в котором каждое значение name уникальное. vid_id в данном случае будет любым из набора vid_id, соответсвующих данному name.
Тогда так наверное
select a.name, a.vid_id from
table1 a
INNER JOIN
(select vid_id, count(*) AS cnt from table1 group by vid_id HAVING cnt = 1)b ON b.vid_id = a.vid_id
В предыдущем ответе правильное решение получилось, но уж больно путь сложный. Так проще:
SELECT vid_id, max(name)
FROM table1
GROUP BY vid_id