[英]a sql query from oracle
我正在使用oracle 10g EE
数据库。我有一个表mytable,有两列,数据如下:
注意 :我只想根据第二列中的相同值来查找数据,第一列中是否存在相同或不同的值并不重要。
对于A, B and C
, these 3 are required output
10
重复3次, these 3 are required output
类似地20
被重复2次C
和D
,并且这些还需要输出
column1 column2
-------------- ---------------
A 10 //required
A 10 //required
B 10 //required
C 20//required
D 20//required
E 30--------not required as 30 is only here and not duplicated
F 40--------not required as 40 is only here and not duplicated
需要以下输出,即第二列中的值相同,第一列中的值相同或不同
column1 column2
-------------- ---------------
A 10
A 10
B 10
C 20
D 20
听起来像你想要的
SELECT *
FROM table_name t1
WHERE column2 IN( SELECT column2
FROM table_name t2
GROUP BY column2
HAVING COUNT(*) > 1 )
这似乎适用于您的示例数据
SQL> with table_name as (
2 select 'A' column1, 10 column2 from dual union all
3 select 'A', 10 from dual union all
4 select 'B', 10 from dual union all
5 select 'C', 20 from dual union all
6 select 'D', 30 from dual)
7 SELECT *
8 FROM table_name t1
9 WHERE column2 IN( SELECT column2
10 FROM table_name t2
11 GROUP BY column2
12 HAVING COUNT(*) > 1 );
C COLUMN2
- ----------
B 10
A 10
A 10
SELECT column1,
column2
FROM <table> t1
WHERE column2 IN (SELECT column2
FROM <table> t2
GROUP BY column2
HAVING count(*) > 1);
从表中的第2列中选择*(通过count(*)> 1的coulmn2从表组中选择第2列);
应该为您工作。
谢谢阿比
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.