有人可以建议一种方法来选择没有列唯一值的行吗?
如果我有五条记录,其中一条记录具有CustNo = 7,1条记录具有CustNo = 9,三条记录具有CustNo = 11,我只想选择具有CustNo = 11的三行
答案 0 :(得分:4)
这将在CustNo中找到重复的记录及其数量
Select CustNo, Count(*) From Table1
Group By CustNo
Having Count(*) > 1
完全解决方案的另一种方式(只有那些有重复项的完整记录),使用group和join
Select t1.*
From Table1 t1 inner join
(Select CustNo cn From Table1
Group By CustNo
Having Count(*) > 1) t2 On t1.CustNo = t2.cn
答案 1 :(得分:4)
显示所有不相同的行,您需要像这样的
子查询select * from CustDetails
WHERE CustNo IN (SELECT CustNo from CustDetails
group by CustNo
having count(CustNo) > 1)
这是同一个
的sql小提琴答案 2 :(得分:3)
这将检索所有重复记录:
SELECT CustNo FROM MyTable Group By CustNo Having COUNT(*) > 1
答案 3 :(得分:2)
只做一个SELECT/GROUP BY
将只返回CustNo非唯一的记录的一行。但是,在子查询中实现它应该这样做。
如果我正确理解您的问题,那么这将返回CustomerTable
中CustNo不唯一的行:
SELECT *
FROM CustomerTable
WHERE CustNo IN (
SELECT CustNo
FROM CustomerTable
GROUP BY CustNo
HAVING COUNT(*) > 1)
答案 4 :(得分:0)
如果需要获取重复行的完整行,请使用窗口函数:
select t.*
from (select t.*, count(*) over (partition by CustNo) as cnt
from table t
) t
where cnt > 1;