2017-02-23 134 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