簡體   English   中英

使用 SQL 刪除 AWS Redshift 中的重復項

[英]Removing duplicates in AWS Redshift using SQL

摘要:我有一張看起來像這樣的桌子

實體編號 實體名稱
01 實體1
02 實體2
01 實體1
03 實體3

問題我正在嘗試使用 SQL proc 刪除重復項,但很難找到解決方案。 在這種情況下,有沒有辦法只使用 SQL 刪除重復項? 理想情況下,我想創建一個過程,我可以在需要刪除重復項時調用它。

我嘗試使用 CTE 和 row_number() 但努力讓它工作......

如果我正確地收集了你的數據,一個簡單的不同選擇應該在這里工作:

SELECT DISTINCT EntityId, EntityName
FROM yourTable;

您在 row_number() 的正確軌道上,但看起來您正在嘗試刪除除了一個重復行之外的所有行。 這是不可能的,因為無法區分一個副本和另一個副本。 您將需要通過幾個步驟來完成此操作。

  1. 將重復行的單個副本保存到臨時表中。 在該值等於 2 的情況下使用 row_number() 是一種好方法。
  2. 從原始表中刪除所有匹配的行。
  3. 將臨時表中的值插入回原始表中。

您可以在事務塊中執行此操作,這樣數據庫的其他用戶就不會看到缺少行的表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM