oracle SQL只返回值相同的行

gtlvzcf8  于 2023-04-29  发布在  Oracle
关注(0)|答案(2)|浏览(165)

在SQL中,我很难得到值相同的行。

示例

recnr测试ID
1一百零一
一百零二
一百零二
一百零三
一百零四
一百零四
一百零四
八个一百零五

我想查看所有具有相同test_id编号的记录一次以上。从上面的例子中,我们可以看到:
| recnr|测试ID|
| --------------|--------------|
| 二|一百零二|
| 三|一百零二|
| 五|一百零四|
| 六|一百零四|
| 七|一百零四|
有人知道如何做到这一点吗?
先谢谢你了。
我确实尝试过使用group by和stuf,但可能是错误的方式。

sh7euo9m

sh7euo9m1#

我们首先得到使用group byhaving count(1) > 1复制的test_id的列表,然后使用inner join得到预期的数据:

select t.*
from mytable t
inner join (
  select test_id
  from mytable
  group by test_id
  having count(1) > 1
) as s on s.test_id = t.test_id

这是一个在mysql上测试的工作解决方案。. demo here

mwecs4sa

mwecs4sa2#

对于MS SQL SERVER,我们可以使用IN操作符,Subquery,GroupBy和Having来获得您想要的结果。

SELECT * FROM MyTable A WHERE A.test_id IN (  SELECT B.test_id FROM MyTable B GROUP BY B.test_id HAVING COUNT(1)>1  );

您可以使用以下查询在任何在线MS SQL SERVER编译器上对其进行测试。

CREATE TABLE MyTable (
  recnr int,
  test_id int
);

-- insert
INSERT INTO MyTable(recnr,test_id) VALUES (0001,101);
INSERT INTO MyTable(recnr,test_id) VALUES (0002, 102);
INSERT INTO MyTable(recnr,test_id) VALUES (0003, 102);
INSERT INTO MyTable(recnr,test_id) VALUES (0004,103);
INSERT INTO MyTable(recnr,test_id) VALUES (0005, 104);
INSERT INTO MyTable(recnr,test_id) VALUES (0006, 104);
INSERT INTO MyTable(recnr,test_id) VALUES (0007,104);
INSERT INTO MyTable(recnr,test_id) VALUES (0008, 105);

-- fetch 
SELECT * FROM MyTable A WHERE A.test_id IN (SELECT  B.test_id FROM MyTable B GROUP BY B.test_id HAVING COUNT(1)>1) ;
GO

我已经添加了图像以供参考。

相关问题