0

可能重复:
参数化 SQL IN 子句?

是否可以在 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 中没有任何空格!

4

1 回答 1

0

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

SQLFIDDLE 演示

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

SET @sql = CONCAT_WS(' WHERE test_name IN ', 'SELECT * FROM test', @looking_for);
PREPARE preptest FROM @sql;
EXECUTE preptest;
于 2012-11-20T20:22:13.497 回答