从mysql表中选择Unique Pairs of columns列上的行

时间:2014-09-29 10:49:19

标签: php mysql sql select distinct

我有一张表table

现在这有三列table_idcontent_idcontent_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 的行

因此,我得出结论,我想要选择行的完全重复

2 个答案:

答案 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)

Demo

或者如果您的表格中只有这三列,那么您只需使用min()

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

Demo

答案 1 :(得分:0)

这是特定于mysql的:如果在不使用聚合函数的情况下使用GROUP BY函数,则group by子句将表现为不同,并拾取第一个不同的行。

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

Demo