我有一个非常简单的表,只有part_id和part_type:
CREATE TABLE `temp` (
`part_id` INT NOT NULL ,
`part_type` CHAR( 5 ) NOT NULL
这里有很长的零件ID和类型列表。但是,某些部件有多种类型。我如何获得具有多种类型的部件的ID?我在想这样的事情会起作用:
SELECT * FROM temp WHERE part_in IN (SELECT count(part_id) as duplicates FROM temp WHERE 1 GROUP BY part_id) AND duplicates > 1
答案 0 :(得分:29)
select part_id from temp
group by part_id
having count(*) > 1
这将为您提供包含多行的part_id。然后,您可以像示例查询一样包装它,以获取具有多行的所有部分的所有part_id / part_type数据。
select * from temp
where part_id in (select part_id from temp
group by part_id
having count(*) > 1)
order by part_id
答案 1 :(得分:4)
我喜欢GROUP_CONCAT
这个东西,因为它给你这个问题的答案(多少)和下一个问题(哪些类型)。
select part_type, count(*), group_concat(part_id)
from temp
group by 1
having count(*) > 1;
答案 2 :(得分:0)