我可以在IN语句中使用CASE吗?我使用的是mysql服务器,下面是查询。
SELECT Id from Tenant
where TenantId IN (
CASE WHEN 'someVariable' is NULL
THEN (select customer_id from Partners where partner_id = 'abc')
ELSE ('xyz1','xyz2','xyz3')
END
)
这会引发错误:
的 Error Code: 1241. Operand should contain 1 column(s)
我需要检查IN子句中的Null值,然后依赖于结果需要激活选择"合作伙伴"表或只是将预定义字符串列表传递给IN子句。 提前谢谢。
答案 0 :(得分:0)
您可以尝试:
SELECT Id from Tenant
WHERE TenantId IN (select customer_id from Partners where partner_id = 'abc')
AND somevariable IS NULL
OR TenantId IN ('xyz1','xyz2','xyz3') AND somevariable IS NOT NULL
或作为替代
SELECT Id from Tenant
where TenantId IN (
CASE WHEN 'someVariable' is NULL
THEN (select customer_id from Partners where partner_id = 'abc')
ELSE (select 'xyz1' AS id UNION ALL select 'xyz2' UNION ALL Select 'xyz3')
END
)