我有一个表,我需要识别重复的条目来删除它们。我可以使用以下查询找到重复项
select s.*, t.*
from [tableXYZ] s
join (
select [date], [product], count(*) as qty
from [tableXYZ]
group by [date], [product]
having count(*) > 1
) t on s.[date] = t.[date] and s.[product] = t.[product]
ORDER BY s.[date], s.[product], s.[id]
然后需要使用此表中的结果来显示[fieldZ] IS NULL
我尝试过以下操作,但收到错误The column 'date' was specified multiple times for 'subquery'.
select * from
(
select s.*, t.*
from [tableXYZ] s
join (
select [date], [product], count(*) as qty
from [tableXYZ]
group by [date], [product]
having count(*) > 1
) t on s.[date] = t.[date] and s.[product] = t.[product]
) as subquery
where [fieldZ] is null
答案 0 :(得分:2)
您的子查询中有列日期两次,因为您选择了s.*
和t.*
,这将返回s.Date
和t.date
。如果您需要两列,请将其中一列作为别名。
您还将使用product
列遇到此问题。您的子查询不能返回具有相同名称的多个列。仅在子查询中选择所需的列,而不是选择所有列。这是一个很好的做法,将解决这个问题。