У меня есть стол 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 хочу выбрать полные дубликаты рядов
Вы можете использовать самостоятельное объединение, чтобы выбрать минимальную строку для группы
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)
или если в вашей таблице только эти 3 столбца, то вы можете просто использовать min()
select min(id) id ,content_id,content_type
from test
group by content_id,content_type
Это специфично для mysql : Если вы используете функцию GROUP BY без использования агрегатных функций, предложение group by будет вести себя как отдельное и поднимать первую отдельную строку.
select id, content_id, content_type from test group by content_id, content_type order by id