2017-04-10 59 views
0

我有一張表,我需要確定重複條目以刪除它們。我可以使用下面的查詢使用查詢結果作爲子查詢語法

找到重複的,然後需要從該表中使用的結果表明,其中[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 

回答

2

由於您選擇s.*t.*,因此您在子查詢中有兩個列日期,這將返回s.Datet.date。如果你需要兩列,別名是其中一列。

您還將遇到product列的此問題。您的子查詢不能返回具有相同名稱的多個列。只需在子查詢中選擇需要的列而不是選擇所有列。這是一個很好的做法,將解決這個問題。

+1

只是爲了增加重點......我們有一個標準,即沒有SQL應該使用「*」作爲生產代碼。我們純粹將它用作調試輔助工具,以便快速建立查詢原型並僅測試事物。總是列出您實際感興趣的所有列,以及您實際上對任何給定查詢感興趣的列。 – pmbAustin