检查表中是否已存在字段组合

时间:2018-11-20 09:14:33

标签: sql sql-server

我最弱的SQL领域是self JOINS,目前正遇到问题。

我需要在表中找到最新的条目,我使用的是WHERE DATEFIELD IN (SELECT MAX(DATEFIELD) FROM TABLE)。然后,我需要确定同一表中是否已经有3列了。

我最近的尝试是这样-

SELECT * FROM PART_TABLE
WHERE NOT EXISTS
(
SELECT 
t1.DATEFIELD
t1.CODE1
t1.CODE2
t1.CODE3
FROM PART_TABLE t1
INNER JOIN PART_TABLE t2 ON t1.UNIQUE = t2.UNQIUE
)
WHERE t1.DATEFIELD IN
(
SELECT MAX(DATEFIELD)
FROM PARTTABLE
)

我认为部分问题是,使用此方法签入t2时无法排除t1中的唯一行。

使用MSSQL 2014。

1 个答案:

答案 0 :(得分:2)

以下查询将返回表中的最新记录以及一个位标志,其中是否存在重复的元组{Code1, Code2, Code3}在不同的标识符下:

select top (1) p.*,
  case when exists (
    select 0 from dbo.Part_Table t where t.Unique != p.Unique
    and t.Code1 = p.Code1 and t.Code2 = p.Code2 and t.Code3 = p.Code3
  ) then 1
  else 0 end as [IsDuplicateExists]
from dbo.Part_Table p
order by p.DateField desc;

您可以使用此示例作为模板来满足您的特定需求,不幸的是,从您的解释中并不能立即看出这些需求。