2010-11-19 63 views
2

我有一個客戶信息數據庫。帳單地址和送貨地址分別有一行,並帶有標誌它的標誌; BA,SA。許多記錄都設置爲BA,因此我爲每個客戶重複記錄。我需要爲SA設置一個重複的記錄。 我試過這個,但它更新了所有重複的記錄。相反,我只想更新重複記錄中的一個;MySql UPDATE只有一個重複記錄

UPDATE customer1 AS C1 JOIN 
(
SELECT Ca.user_id, C2.CID, Ca.address_type FROM 
customer1 AS Ca JOIN 
customer2 AS C2 ON CC.user_id = C2.CID 
GROUP BY Ca.user_id 
    HAVING COUNT(*) > 1 
) AS C2a ON 
C1.user_id = C2.CID 
SET C1.address_type = 'SA' 
+1

你可以發佈你的表模式? – InSane 2010-11-19 06:39:01

回答

0

就數據庫而言,重複記錄是不可分割的。

我認爲你最好的選擇是爲每條記錄添加一個自動生成的ID(參見auto_increment)。然後,您可以唯一標識要更新的記錄。

另一種替代方法是從其中一個副本中複製數據,刪除它們,插入一條記錄,然後插入另一條記錄並進行所需的更改。

0

你應該規範你的表模式,以避免重複數據。

意思是,我會建議所有地址爲 的「地址」表,並通過指向這些地址的字段BA_address和SA_address擴展「customer」表。

如果您現在需要將BA中的記錄「複製」到SA,則只需在SA字段中放置相同的addressID即可,如在BA字段中。

1
... 
LIMIT 0,1 

注意,如其他人所說的,你不應該在首位數據庫重複行 - 這意味着你的模式是錯誤的。此外,你會得到一個警告使用LIMIT沒有ORDER BY