簡體   English   中英

MySQL條件條件為true時插入

[英]mysql insert if condition true

首先,這是問題的簡要摘要:

是否可以有條件地運行INSERT語句? 類似於以下內容:

IF(expression) INSERT...

現在,我知道可以使用存儲過程來做到這一點。

現在,我想這樣做

假設我們有以下3個表:

products: id, qty_on_hand
orders: id, product_id, qty
roomTable :id,product_id,room_number,booked_status

現在,假設有20個房間(產品ID 2)的訂單進來。我們首先從訂單表中檢查給定product_id的總數量,如total_qty和total_qty <qty_on_hand,如果返回true,則插入訂單值並在最后booked_status =之后更新1個房間帶有booked_status ='Y'的roomTable中的'Y'房間,並提供該房間的ID。

問題是我無法進行聯接查詢。 我到目前為止所做的-

    INSERT INTO orders(product_id, qty)
SELECT 2, 20 FROM products WHERE id = 2 AND qty_on_hand >= 20

對於那些需要更多有關Mt.com技術的細節的人。 施耐德

INSERT INTO orders(product_id, qty)
SELECT 2, 20 
  FROM products 
 WHERE id = 2 AND qty_on_hand >= 20 + (select sum(qty) from orders where product_id = 2)

這里發生的是select語句的結果是硬編碼的。 在這種情況下,我們將INSERT INTO order(product_id,qty)VALUES(2,20)替換為SELECTS 2,20 VALUES(2,20)。SELECT的結果是硬編碼的,但僅在條件滿足時返回值被滿足。

我發現這篇文章更深入地介紹了此技術:

http://boulderapps.co/dont-insert-when-maximum-is-reached

會不會是這樣?

INSERT INTO orders(product_id, qty)
SELECT 2, 20 
  FROM products 
 WHERE id = 2 AND qty_on_hand >= 20 + (select sum(qty) from orders where product_id = 2)

因此,如果最后的訂單數量加上所插入訂單的數量小於或等於手頭的數量,則不會插入。

暫無
暫無

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

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