2014-02-15 45 views
0

我有一張表,其中有多個基於多列的重複數據。我想出了這個查詢查找所有重複的行如何根據多個列更新數據庫中的一組重複行

select * 
from polls 
group by server_id, product_id, poll_date 
having count(*) > 1; 

如何更新這些結果,並設置「updated_by」字段爲「admin」。

我試着這樣做,但它不會對我的幫助工作:(

update polls 
set updated_by='admin' 
group by server_id, product_id, poll_date 
having count(*) > 1; 

感謝

+0

嗨。你可以給sql代碼創建你的表並插入一些示例行? –

回答

0

你應該能夠加入您的SELECTUPDATE

UPDATE `polls` AS `p1` 
INNER JOIN (
    SELECT * 
    FROM `polls` 
    GROUP BY `server_id`, `product_id`, `poll_date` 
    HAVING COUNT(*) > 1 
) AS `p2` 
    ON `p2`.`server_id` = `p1`.`server_id` 
    AND `p2`.`product_id` = `p1`.`product_id` 
    AND `p2`.`poll_date` = `p1`.`poll_date` 
SET `p1`.`updated_by` = 'admin'; 

當然最好是直接加入主鍵(如果有的話)

+0

我得到這個錯誤:錯誤1052(23000):字段列表中的'updated_by'不明確 – Candice

+0

哦,對不起,我的不好。當然,我們必須指定哪個表應該用於更新。我更新了我的答案。 – Fleshgrinder

+0

謝謝你的工作! – Candice

相關問題