我正在使用 WHERE 子句中的变量运行 SELECT 语句(Windows 7 下的数据库 MySQL 版本 5.5.27)。它应该返回 6 条记录,但它没有。下面是一个简单的测试代码。
-- Test-I
SET @group_saids := (SELECT REPLACE(
'''ClicPlan - España|ClicPlan - Francia|ClicPlan - UK|ClicPlan - Belgique|ClicPlan - Argentina|Clicplan - Turkey'''
,'|',"','") as aids_list from dual);
select @group_saids from dual;
select sd.aid
FROM said_aid sd
where sd.said in (@group_saids);
-- 没有选择记录;
-- 测试-II
select sd.aid
FROM said_aid sd
where sd.said in ('ClicPlan - España','ClicPlan - Francia','ClicPlan - UK',
'ClicPlan - Belgique','ClicPlan - Argentina',
'Clicplan - Turkey');
aid
----
3045
3253
3254
3260
3268
3270
在上面Test-I的代码中,select from table said_aid不返回记录,应该是6条记录输出。使用硬编码的 IN 值对 Test-II 相同的查询返回 6 条记录输出。执行期间没有错误。