簡體   English   中英

MySQL根據條件執行SELECT

[英]MySQL execute SELECT based on condition

如何根據用戶輸入適當地使用CASE執行SELECT查詢?

執行以下查詢時:

SELECT 
    CASE WHEN user_input_variable = 'y' THEN        
    (SELECT * FROM table_foo WHERE bar = '6f322766-0ec0-4d24-840f-c857a82a6efe')        

    ELSE
    (SELECT 0)
     END

如果用戶選擇了“y”,那么它應該從表中返回記錄,否則它應該返回一個空的結果集。

我收到錯誤:

操作數應包含1列

子查詢必須返回不超過1列。 改為使用UNION ALL。

請注意,列數必須相同,這就是您需要在第二個選擇中選擇null的原因。

SELECT * FROM table_foo WHERE bar = '6f322766-0ec0-4d24-840f-c857a82a6efe')
    and user_input_variable = 'y' 
union all     
SELECT 0, null, null... where user_input_variable <> 'y' 

您也可以使用IF條件。

IF user_input_variable = 'y'
    SELECT * FROM table_foo WHERE bar = '6f322766-0ec0-4d24-840f-c857a82a6efe')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM