我在尋找一些有關IF-THEN-ELSE構造的SQL查詢的幫助。 它通過在「dump」--table中插入新行後取決於一列的值 - 在我的應用程序中圍繞自動運行來複制到特殊表。SQL中的CASE-WHEN-THEN-ELSE構造
爲了鍛鍊吧,我做了一個試驗DB與表概率和一張桌子prob2
的觸發機制是在控制之下。 現在它仍然涉及到如何處理這個特殊規則。這取決於「C」的值
在口頭上,這是我想要的:
IF (the value in column c of the prob-table - from the row with the highest ID of the prob table = 2)
THEN (Now, copy this line to the prob2 table)
END IF
這樣我可以爲「C」執行一個不同的動作的每一個值IF-THEN - ELSEIF - 然後 - ELSEIF - 然後 - 如果建設。
表概率:
- id | a | b | c |
- ----+---------------+---+---+
- 1 |std745_900w | 5 | 4 |
- ----+---------------+---+---+
- 2 |std745_900w | 2 | 3 |
- ----+---------------+---+---+
- 3 |std745_900w | 1 | 9 |
- ----+---------------+---+---+
- 4 |std745_900w | 3 | 2 |
- ----+---------------+---+---+
我翻譯成(不工作)的SQL查詢
IF
(SELECT c FROM prob WHERE id = (SELECT MAX(id) FROM prob) = 2)
THEN
(INSERT INTO prob2 (id, a, b, c)
SELECT id, a, b, c FROM prob WHERE id = (SELECT MAX(id) FROM prob))
END IF
查詢括號之間的IF後) - >SELECT c FROM prob WHERE id = (SELECT MAX(id) FROM prob)
< - 工作和OKE結果爲「2」 THEN→INSERT INTO prob2 (id, a, b, c) SELECT id, a, b, c FROM prob WHERE id = (SELECT MAX(id) FROM prob)
<之後的查詢 - 效果很好 但是,SQL並不理解「IF語句」的表達式。
這是一個MariaDB上的mysql
任何人都可以幫忙嗎?
你是說你在表概率上有一個插入觸發器,並且你想在這個觸發器中包含這個邏輯? –
在MySQL中,如果... then - else ... end if語句只能用於存儲的程序(過程,函數,觸發器),則無法按原樣運行。從數據庫檢索數據也稍有不同。 – Shadow
是的,在MariaDB中,您可以在插入表格後定義觸發器。這會觸發一個SQL查詢。我用一個簡單的查詢來測試它,並且工作。我的麻煩在於it-then-else構造的IF部分的測試 –