我有一张表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 的行
因此,我得出结论,我不想要选择行的完全重复
答案 0 :(得分: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)
或者如果您的表格中只有这三列,那么您只需使用min()
select min(id) id ,content_id,content_type
from test
group by content_id,content_type
答案 1 :(得分:0)
这是特定于mysql的:如果在不使用聚合函数的情况下使用GROUP BY函数,则group by子句将表现为不同,并拾取第一个不同的行。
select id, content_id, content_type from test group by content_id, content_type order by id