mysql里的in关键字为什么查出来的不一样呢

select * from do_table_49 where id in (select fd530 from do_table_47 where id=2154);
select * from do_table_49 where id in (3624,3626,3633);
请教 为何第一个sql就查出来一条数据,而第二条查出来三条呢 fd530的内容就是第二条sql里的in后面的内容 在线等答案

呃,问一下啊,select fd530 from do_table_47 where id=2154查询出来的不会是
‘3624,3626,3633’这样的一条数据吧,是不是
select * from do_table_49 where id in (select fd530 from do_table_47 where id=2154);
只能查到3624这条数据追问

查询出来的fd530是一个字段 字段的值就是一串字符串3624,3626,3633

追答

这个呢,你知道find_in_set,就是搜索set类型数据的方法,find_in_set(‘b’,'a,b,c');
虽然fd530字段不是set类型,但都是用逗号连接的一串字符,功能上也可以实现
select * from do_table_49 where find_in_set(`id`, (select fd530 from do_table_47 where id=2154));
但个人建议最好改一下数据结构,可以单建一个联系表用来关联do_table_47和do_table_49的id字段映射关系

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-11-05
会不会是括号里面的fd530的问题?追问

是啊,不知道怎么解决

第2个回答  2014-11-05
你分开测试看看,你看看你select fd530 from do_table_47 where id=2154查出来的 是什么

还有,你这种不建议使用嵌套查询,不如改成join查询吧追问

查出来的就是(3624,3626,3633)

追答

select * from do_table_49 as d9 left join do_table_47 as d7 on d7.fd530=d9.id where d7.id=2145;试试这个看看

追问

fd530里有多个值(是一个字符串)3624,3626,3633......每一个值都对应49表的一个ID,希望这么说您能明白一点