您好我正在编写mysql / oracle数据库查询以支持select in in子句我的查询就像这样
SELECT * FROM country
WHERE
country_id in( IF('test' = 'test',(1,2,3),true) )
如果condition('test'='test')为true,那么它应该像
那样触发查询SELECT * FROM country WHERE country_id in(1,2,3)
否则它应该触发查询
SELECT * FROM country WHERE country_id in(true)
答案 0 :(得分:4)
您可以在此处使用test
作为变量,如果test1 = test2
然后country_id
将在(1,2,3)
,则country_id
不会受到限制:
SELECT * FROM country
WHERE ((test1 = test2 and country_id in(1,2,3))or
test1 <> test2)
答案 1 :(得分:3)
您可以使用基本布尔逻辑执行此操作。你在做什么相当于:
SELECT *
FROM country
WHERE country_id in (1,2,3) or 'test' <> 'test';
(注意:我没有在NULL
上对'test'
进行测试,因为它是一个字面值。如果这是一个可以取NULL
值的变量,那么你会有也考虑到这一点。)