是要
id  name  
3 good 
1 boy 
还是要
id  name  
3 good 
1 hello
boy 还是hello

解决方案 »

  1.   

    对不起,不小心写错了
    是要
    还是要
    id  name  
    3 good 
    1 hello因为item表中id为1的name的值为“helle”,不小心写成boy了
      

  2.   

    select 
        a.id,a.name 
    from 
        item a,publish b 
    where 
        ','+a.id+',' like  '%,'+b.content+',%'
        and 
        b.cid=1
      

  3.   

    那我就没有办法了,因为mysql里有这样两条字符串转为数字的规则:
    1.如果第一位是数字的字符串被用于一个算术运算中,那么它被转为这个数字的值。
    例如:上面结果集:'2,4'被转为数字2,后面的都丢了。
    2.如果一个包含字符和数字混合的字符串不能被正确地转换为数字,那么它被转换成0.
      

  4.   

    SELECT `id`, `name` 
    FROM `item`
    , (SELECT @T := `content` FROM `publish` WHERE `cid` = 1) tA
    WHERE @T LIKE CONCAT('%', `id`, '%');注意,本查询无法使用 id 列 索引!!
      

  5.   

    SELECT tA.`id`, tA.`name` FROM `item` tA
    , `publish` tB
    WHERE  FIND_IN_SET(tA.`Id` , tB.`content`) > 0
    AND tB.`cid` = 1;
    注意,
    本查询无法使用 id 列 索引!!
    本查询效率严重低于上一查询!!!第一个查询特性可能会因为 MySQL 的版本更新而消失,< 只是可能!:-) >
    第二个查询会有更好的版本兼容性。