查询选择具有重复值的列

时间:2016-07-12 06:33:15

标签: mysql sql oracle select distinct

我有一个包含多个记录和多列的表,如:

Name       |Color      |Price       |Description |Code
-------------------------------------------------------------
Item1      |Blue       |$15.00      |ABCD        |Code1
Item2      |Blue       |$25.00      |ABCD        |Code2
Item3      |Blue       |$35.00      |ABCD        |Code2
Item4      |Blue       |$15.00      |ABCD        |Code1
Item5      |Blue       |$15.00      |ABCD        |Code1

我希望通过使用查询获得在所有记录中具有相同值的列,例如

Color      |Description 
------------------------------------
Blue       |ABCD        
Blue       |ABCD        
Blue       |ABCD        
Blue       |ABCD        
Blue       |ABCD        

有没有简单的方法呢?我一直在考虑如何实现这一目标,但到目前为止还没有成功。任何人都可以帮我这样做吗?谢谢!

1 个答案:

答案 0 :(得分:0)

在mysql(和oracle)中,你可以使用subselect .. group bu和

select * from my_table 
where (color, decription) in (select color, description 
                      from my_table 
                      group by color, description 
                      having count(*) >1)

否则,如果你不知道哪个col列符合标准,你就可以建立一个dinamic select来测试每一列。

select my_column from my_table 
group by my_column
having count(*) >1

如果adn count(*)的相关select .. group> 1,则表示您已重复值