簡體   English   中英

通過從另一個表MySQL查詢中選擇數據來更新表

[英]Update a table by selecting data from another table MySQL query

我有兩張桌子

訂購表

or_id  count status
1        2    0
2        3    0
3        2    0

訂單明細表

ordetail         or_id    status
    1               1         1
    2               1         1
    3               2         0
    4               2         1
    5               2         1
    6               3         1
    7               3         1

如果Order_Details表中對應的order_id的所有狀態均為1,我想將訂單表狀態更新為1.我嘗試使用此查詢,但由於子查詢返回的行數超過1而無法使用

UPDATE order o JOIN order_detail od ON o.or_id = od.or_id SET o.Status = 1 WHERE 
o.or_id= (SELECT or_id FROM order_detail GROUP BY or_id 
HAVING SUM(status = 1) = COUNT(*) ) 

提前致謝

根據狀態更新的第一個查詢:

UPDATE `order` o
  JOIN Order_Detail od ON o.or_id = od.order_id
SET o.Status = 1
WHERE od.Status = 1 

第二個查詢檢索:

SELECT DISTINCT order_id
FROM Order_Detail
WHERE status = 0

注意:如果一個訂單有2個order_details,則1)的狀態為0,2)status =1。由於存在一行狀態為0的行,因此上面的查詢將包含該訂單-如果只想檢索訂單ID都是status =0。然后使用此查詢:

SELECT order_id
FROM Order_Detail
GROUP BY order_id
HAVING SUM(status = 0) = COUNT(*)

更新:根據注釋,由於僅在所有訂單明細均為1的情況下才希望將狀態設置為1,因此請使用以下更新查詢:

 UPDATE `order` o
  JOIN (
    SELECT order_id
    FROM Order_Detail
    GROUP BY order_id
    HAVING SUM(status = 1) = COUNT(*)
  ) og ON o.or_id = og.order_id
SET o.Status = 1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM