評估我有這樣一個查詢:的MySQL選擇哪個查詢通過參數
SELECT IF(@param = 42, 'static', SELECT ...);
但它不工作,因爲我不能插入IF內的SELECT語句()。我的問題是,我無法做其他事情(在sql之外使用if-then語句),因爲「架構限制」。
任何解決方案來選擇是否評估基於參數值的查詢?
評估我有這樣一個查詢:的MySQL選擇哪個查詢通過參數
SELECT IF(@param = 42, 'static', SELECT ...);
但它不工作,因爲我不能插入IF內的SELECT語句()。我的問題是,我無法做其他事情(在sql之外使用if-then語句),因爲「架構限制」。
任何解決方案來選擇是否評估基於參數值的查詢?
你並不需要一個select
:
select (case when @param = 42 then 'static' else date_format(now(), '%Y-%m-%d') end)
請注意,您正試圖將兩種不同類型 - 日期時間和字符串。您應該使用您的首選格式將日期時間顯式轉換爲字符串。
您可以使用if()
來寫此內容。 case
稍微更通用一點,也是ANSI標準。
我的錯。我需要運行一個通用查詢,而不僅僅是一個now()。它只是一個簡短的例子。 – Alvins 2014-10-06 12:07:38
@Alvins。 。 。如果您需要子查詢,請將其放在括號內。 – 2014-10-06 15:15:12
第二個選擇靜態?在這種情況下,您可以在查詢中移動「IF」。如果'...'是'foo FROM bar',則會得到'SELECT(@param = 42,然後'static'else foo end)FROM bar'。 – 2014-10-06 12:11:32