检查sql查询中是否重复空值

时间:2011-02-01 11:07:53

标签: mysql sql-server sql

我需要通过比较记录

的每个字段来检查DB中是否存在重复值
FIELD1 F2 F3  F4
 1     -   -   -
 1     -   -   -

在这种情况下,它显示重复记录。如何使用SQL查询?

3 个答案:

答案 0 :(得分:0)

有几种方法可以解决这个问题。您可以在查询中使用DISTINCT,也可以使FIELD1成为主键(这会阻止重复值)或使用UNIQUE约束。

答案 1 :(得分:0)

SQL Server

如果您需要检查表中是否存在重复值,可以使用此查询。

-- Setup test data
declare @T table (field1 int, f2 int, f3 int, f4 int)
insert into @T values (1, null, null, null)
insert into @T values (1, null, null, null)
insert into @T values (2, null, null, null)
insert into @T values (2, 2, 2, 2)
insert into @T values (2, 2, 2, 2)

-- Fetch rows that are duplicates
select field1, f2, f3, f4
from @T
group by field1, f2, f3, f4
having count(*) > 1

结果

field1 f2   f3   f4
1      NULL NULL NULL
2      2    2    2

如果您需要查询表而不是重复项,请使用此查询

select distinct field1, f2, f3, f4
from @T

答案 2 :(得分:0)

根据SQL标准,NULL s GROUP在一起,因此在上下文中应该与任何其他值没有区别,即

SELECT FIELD1, F2, F3, F4, 
       COUNT(*) AS duplicate_tally
  FROM YourTable
 GROUP 
    BY FIELD1, F2, F3, F4
HAVING COUNT(*) > 1;