[英]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的結果是硬編碼的,但僅在條件滿足時返回值被滿足。
我發現這篇文章更深入地介紹了此技術:
會不會是這樣?
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.