2017-02-23 229 views
0

我做了一個select查詢來找出哪些產品沒有組合時有一個參考集,並且想要將結果更新爲NULL。從選擇sql創建更新查詢

任何人都知道如何構建查詢更新?

SELECT查詢:

SELECT 
    `id_product_supplier` , `id_product` , `id_product_attribute` , 
    `product_supplier_reference` , COUNT(`product_supplier_reference`) 
FROM `ps_product_supplier` 
GROUP BY `id_product` 
HAVING COUNT(`product_supplier_reference`) >1 
AND `id_product_attribute` =0 
AND `product_supplier_reference` >0 

我想有一個更新是product_supplier_reference =結果NULL。

+0

MySQL或SQL-Server?不要同時標記 – Kostis

+0

到目前爲止您嘗試過哪些更新查詢? –

+0

對不起,我刪除了sql-server標記,它在phpmyadmin中我試過這個 –

回答

1

試試這個

update ps_product_supplier tt inner join(
SELECT 
`id_product_supplier` , `id_product` , `id_product_attribute` , `product_supplier_reference` , COUNT(`product_supplier_reference`) 
FROM `ps_product_supplier` 
GROUP BY `id_product` 
HAVING COUNT(`product_supplier_reference`) >1 
AND `id_product_attribute` =0 
AND `product_supplier_reference` >0)t on t.id_product_supplier=tt.id_product_supplier 
set tt.product_supplier_reference=null 
+0

試過但得到了錯誤 –

+0

1064 - 你的SQL語法錯誤;檢查與您的MySQL服務器版本相對應的手冊,以便在'from ps_product_supplier t內部連接'(SELECT'id_product_supplier','id_pr'在第2行附近使用' –

+0

我根據mysql語法更新了' –

0
Try below script 

UPDATE ps_product_supplier SET product_supplier_reference = --Value 
FROM 
(
    SELECT id_product_supplier , id_product , id_product_attribute , 
    product_supplier_reference , COUNT(product_supplier_reference) 
    FROM ps_product_supplier 
    GROUP BY id_product 
    HAVING COUNT(product_supplier_reference) >1 AND id_product_attribute =0  
    AND product_supplier_reference >0 
) A WHERE --Your Codition 
0

試試這個,如果你想簡單地更新特定列然後選擇如下SELECT語句只需要列,並加入它的更新:

UPDATE `ps_product_supplier` pps 
INNER JOIN (
     SELECT 
      `id_product` 
     FROM `ps_product_supplier` 
     WHERE `id_product_attribute` =0 
     AND `product_supplier_reference` >0 
     GROUP BY `id_product` 
     HAVING COUNT(`product_supplier_reference`) >1) p ON p.id_product = pps.id_product 
SET pps.product_supplier_reference = NULL