2017-01-09 72 views
0

我想將一個SQL Server查詢轉換爲MYSQL,但是遇到了IF語句的問題。在SQL Server版本中,它們用於指導基於標誌的查詢流程,但我無法使其在MYSQL中工作。我已經概述了代碼如何工作如下:在MYSQL中的流量控制

該腳本根據查詢和數據庫之間可以匹配多少數據來設置標誌。

它隨後執行基於所述標誌選擇語句:如果標誌= 1選擇A,B,C,其中匹配邏輯

否則,如果標誌= 2選擇d,E,F,其中不同匹配邏輯

我曾嘗試使用IF和CASE當兩者都沒有工作。我通常會將IF放在WHERE子句中,但根據標誌選擇不同的列。

是否有一個函數會執行IF/ELSE流程MYSQL?

任何幫助將不勝感激!

+0

MySQL需要一個外殼 - 程序,函數,觸發器,... –

回答

0

假設類型和列數是兼容的,你可以這樣做:

select a, b, c 
from t 
where (v_flag = 1) and match_condition_1 
union all 
select d, e, f 
from t 
where (v_flag = 2) and match_condition_2; 

另一種方法是使用存儲過程。在MySQL中,if控制流程語句只允許在編程塊 - 存儲過程,存儲函數和觸發器中使用。

+0

謝謝! Union沒有工作,因爲在每個select語句中有不同數量的列被選中,所以我把它放在一個存儲過程中。 – jackg1787