WHERE CLAUSE中IN的Mysql变量

时间:2012-11-20 19:46:52

标签: mysql variables

  

可能重复:
  Parameterizing an SQL IN clause?

是否可以在IN子句中使用变量来获得想要的结果?

硬编码示例;

SELECT 1 FROM `test` WHERE test_name IN ('Test1', 'Test2');

理想的解决方案:

SET @test_names = 'Test1, Test2';
SELECT 1 FROM `test` WHERE test_name IN (@test_names);

或者还有其他方法可以达到这个目的吗?

解决方案:

SET @test_names = 'Test1,Test2';
SELECT 1 FROM `test` FIND_IN_SET(test_name, @test_names);

请注意@test_names中没有任何空格!

1 个答案:

答案 0 :(得分:0)

只是另一种解决方案。 (通过反复试验获得^^)

SQLFIDDLE DEMO

SET @looking_for = "('Test1', 'Test2')";

SET @sql = CONCAT_WS(' WHERE test_name IN ', 'SELECT * FROM test', @looking_for);
PREPARE preptest FROM @sql;
EXECUTE preptest;