2013-06-20 52 views
-1

目前,我有這樣的:SQL Server 2008中只有域是唯一的刪除

DELETE FROM t 
FROM (
    SELECT 
      * 
     , rn = ROW_NUMBER() OVER (
        PARTITION BY Street, CAST(PC AS CHAR(4)) 
        ORDER BY CAST(PC AS CHAR(4)) 
      ) 
    FROM Locals where DATALENGTH(PC) < 13 
) t 
WHERE rn > 1 

但我只想要刪除,如果PC列是一樣的。

+1

例如請出示例如 「之前」 和數據 「後」。 –

+0

PC領域是一樣的什麼? –

回答

1
DELETE t 
FROM (
     SELECT rn = ROW_NUMBER() OVER (PARTITION BY PC ORDER BY PC) 
     FROM Locals 
     WHERE DATALENGTH(PC) < 13 
    ) t 
WHERE t.rn > 1 

查看SQLFiddle

1

因此,如果PC字段如下所示:sw1 xyz,sw1 yxz,sw1 xyz。我想刪除上面例子中PC字段已經被複制的所有條目,它將刪除所有在PC字段中具有sw1 xyz但是保留其中之一的條目。