2014-10-06 37 views
0

評估我有這樣一個查詢:的MySQL選擇哪個查詢通過參數

SELECT IF(@param = 42, 'static', SELECT ...); 

但它不工作,因爲我不能插入IF內的SELECT語句()。我的問題是,我無法做其他事情(在sql之外使用if-then語句),因爲「架構限制」。

任何解決方案來選擇是否評估基於參數值的查詢?

+0

第二個選擇靜態?在這種情況下,您可以在查詢中移動「IF」。如果'...'是'foo FROM bar',則會得到'SELECT(@param = 42,然後'static'else foo end)FROM bar'。 – 2014-10-06 12:11:32

回答

2

你並不需要一個select

select (case when @param = 42 then 'static' else date_format(now(), '%Y-%m-%d') end) 

請注意,您正試圖將兩種不同類型 - 日期時間和字符串。您應該使用您的首選格式將日期時間顯式轉換爲字符串。

您可以使用if()來寫此內容。 case稍微更通用一點,也是ANSI標準。

+0

我的錯。我需要運行一個通用查詢,而不僅僅是一個now()。它只是一個簡短的例子。 – Alvins 2014-10-06 12:07:38

+0

@Alvins。 。 。如果您需要子查詢,請將其放在括號內。 – 2014-10-06 15:15:12