我有一个包含引用和名称的表。数据存在一些问题,即有超过2个不同的名称作为不允许的参考。SQL Server组通过
是否有快速查询,我可以编写查找所有具有多个关联名称的引用?
对不起,我只想澄清:
我可以有很多名字,并多次提到,但在每次参考相关的只有一个名字。如果有两个不同的名称与单个参考相关联,我需要显示这些名称。然后
我有一个包含引用和名称的表。数据存在一些问题,即有超过2个不同的名称作为不允许的参考。SQL Server组通过
是否有快速查询,我可以编写查找所有具有多个关联名称的引用?
对不起,我只想澄清:
我可以有很多名字,并多次提到,但在每次参考相关的只有一个名字。如果有两个不同的名称与单个参考相关联,我需要显示这些名称。然后
您可以将它通过referenceand选择所有具有项不止一个:
select reference, count(*)
from myTable
group by reference
having count(*) > 1;
查询:
SELECT reference, COUNT(name)
FROM @table
GROUP BY reference
HAVING COUNT(name) > 1
的样本数据:
declare @table table(reference varchar(5), name int)
INSERT INTO @table values('Ref#1', 1)
INSERT INTO @table values('Ref#1', 2)
INSERT INTO @table values('Ref#2', 3)
INSERT INTO @table values('Ref#2', 3)
INSERT INTO @table values('Ref#3', 4)
输出:
| Ref#1 | 2 |
| Ref#2 | 2 |
我设法这样的:
SELECT ref, COUNT(name)
FROM table
GROUP BY ref
HAVING COUNT(DISTINCT(name)) > 1
如果你使用'HAVING COUNT(DISTINCT name)> 1',那么也使用'SELECT ref,COUNT(DISTINCT name)' –
而'DISTINCT'不是一个函数,在'name'周围不需要括号 –
好吧,如果特定参考最小的名称和最大的名称是不同的,那么就必须与参考相关联的至少两个名字:
SELECT Reference, MIN(Name), MAX(Name)
FROM Table
GROUP BY Reference
HAVING MIN(Name) < MAX(Name)
修复您的数据后,请确保您应用适当的约束来防止将来再次插入此损坏的数据。 –