Выбор строк на уникальных парах столбцов из таблицы MySQL

У меня есть стол table ,

Теперь это имеет три столбца table_id,content_id,content_type

Что я хочу, чтобы выбрать строки на основе уникальных пар столбцов.

Скажем, например, у меня есть такие строки ->

id|content_id|content_type|

1   1          shirt
2   1          trouser
3   4          skirt
4   4          shirt
5   3          trouser
6   5          jeans
7   1          trouser
8   5          jeans

Я хочу запрос, который выбирает Строки с id->1,2,3,4,5,6.

Строки с id->7,8 не должны быть выбраны

Поэтому он приходит к выводу, что я DonT хочу выбрать полные дубликаты рядов

-1

Решение

Вы можете использовать самостоятельное объединение, чтобы выбрать минимальную строку для группы

select t.* from
test t
join (
select min(id) id ,content_id,content_type
from test
group by content_id,content_type
) t1
on(t.id = t1.id
and t.content_id = t1.content_id
and t.content_type = t1.content_type)

Demo

или если в вашей таблице только эти 3 столбца, то вы можете просто использовать min()

select min(id) id ,content_id,content_type
from test
group by content_id,content_type

Demo

1

Другие решения

Это специфично для mysql : Если вы используете функцию GROUP BY без использования агрегатных функций, предложение group by будет вести себя как отдельное и поднимать первую отдельную строку.

select id, content_id, content_type from test group by content_id, content_type order by id

демонстрация

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector