如何正确使用CASE来根据用户输入执行SELECT查询?
在执行以下查询时:
admin role
如果用户选择了“ y”,则它应从表中返回记录,否则应返回空结果集。
我遇到错误:
操作数应包含1列
答案 0 :(得分:3)
子查询必须返回不超过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'
答案 1 :(得分:0)
您也可以使用IF条件。
IF user_input_variable = 'y'
SELECT * FROM table_foo WHERE bar = '6f322766-0ec0-4d24-840f-c857a82a6efe')