2016-05-24 128 views
1

我有2個表從不同的來源獲得不同的值。 一個表稱爲stock有2場,代碼和股票,而其他有代碼,股票(和一大堆更多不相關的東西我想做的事情) 基本上我對是否有足夠數量的檢查當前的查詢是繼從嵌套SELECT查詢MySQL更新

SELECT * 
FROM products 
WHERE products.code 
NOT IN (SELECT stock.code from stock) 
AND products.stock > 0 
AND products.product_active = 1 

哪些工作,但我想擴展它到表products的更新stock字段值爲0爲上述查詢的結果。

謝謝

回答

2

試試這個:

UPDATE products p 
LEFT JOIN stock s ON p.code = s.code 
SET p.stock = 0 
WHERE p.stock > 0 AND p.product_active = 1 AND s.code IS NULL 
+0

乾杯,完美的作品!我一開始嘗試自己做,但失敗慘敗...... – Kosta

1

那麼,爲什麼你不這樣做呢?它非常相似,你只是做:

UPDATE products p 
SET p.stock = 0 
WHERE p.code NOT IN(SELECT s.code FROM stock s) 
    AND p.stock > 0 
    AND p.product_Active = 1 

我不喜歡用IN()聲明,因爲它不處理NULL值非常好,你也可以使用NOT EXISTS(),而不是它:

UPDATE products p 
SET p.stock = 0 
WHERE NOT EXISTS(SELECT 1 FROM stock s 
       WHERE p.code = s.code) 
    AND p.stock > 0 
    AND p.product_Active = 1 
+0

對於這個作品以及記錄,但是有人已經upvoted和我都第一次測試@Giorgos解決方案並將其標記爲解決方案... – Kosta

+0

是的,但是有人已經提出了他的解決方案,因此首先向我展示了他的建議 - 因此我已經厭倦了他的第一個...然後也嘗試了你的建議,這也是所說的工作,因此我相應地提出了相應的建議。 – Kosta

+0

是的,我明白你的意思,剛纔提到它習慣接受第一個答案,或者是最好的答案。 @Kosta – sagi