是否可以在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中没有任何空格!
答案 0 :(得分:0)
只是另一种解决方案。 (通过反复试验获得^^)
SET @looking_for = "('Test1', 'Test2')";
SET @sql = CONCAT_WS(' WHERE test_name IN ', 'SELECT * FROM test', @looking_for);
PREPARE preptest FROM @sql;
EXECUTE preptest;