select * from treenodes as t where t.id in (select u.treeid from user as u where u.treeid in ('120, 122'));
红色字体u.treeid返回的是120, 122。
如何拆分为:
120
122

解决方案 »

  1.   

    select * from treenodes as t where exists (select 1 from user as u where u.treeid in ('120, 122') and find_in_set(t.id,u.treeid))
      

  2.   


    您这还是返回的一条数据啊。应该是返回t表的ID为120,122,跟我之前查的一样,只返回第一条数据。
      

  3.   

    建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
       参考一下这个贴子的提问方式http://bbs.csdn.net/topics/320211382
       
       1. 你的 create table xxx .. 语句
       2. 你的 insert into xxx ... 语句
       3. 结果是什么样,(并给以简单的算法描述)
       4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
       
       这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。
      

  4.   

    select u.treeid from user as u where u.treeid in ('120, 122')
    这个返回的不就是
    120
    122吗
      

  5.   

    您这样写还是返回的120,没有122。我也sql语句写的有问题,已经修正过来了。
      

  6.   


    select t.id from user u,treenodes t where u.user_id=19 and t.id in (u.treeid);等同
    select t.id from treenodes t where  t.id in (select treeid from user where user_id=19);查询出来的结果是treenodes表ID=120。 查询出来的结果应该是 ‘treeid’ 被打上了单引号,有什么办法去掉单引号?
      

  7.   

    建议楼主提供   1. 你的 create table xxx .. 语句
       2. 你的 insert into xxx ... 语句这样就不需要别人去自己写语句来模拟数据了。
      

  8.   

    正确sql语句:select id from treenodes where instr((select treeid from user where user_id=19),id)>0;