IN子句中的mysql条件

时间:2014-02-25 12:12:24

标签: mysql sql oracle

您好我正在编写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)

2 个答案:

答案 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值的变量,那么你会有也考虑到这一点。)