SELECT * FROM `x_shop` WHERE `id` IN(SELECT `sid` FROM `x_search` WHERE `id`=6)SELECT `sid` FROM `x_search` WHERE `id`=6 的结果是  1,2如何让第一句SQL实现  SELECT * FROM `x_shop` WHERE `id` IN(1,2)  的效果?应用场景:为商家设置多个关键字(搜索),以下两种方案那种好一点?
1.建立一个表字段: id、key、sid  其中sid是记录商家ID
2.shop表中添加key字段,并设置全文索引
两个问题,求助

解决方案 »

  1.   

    SELECT a.* FROM `x_shop` AS a, `x_search` AS b WHERE a.id = b.sid AND b.id=6
      

  2.   

    没其他需求就用2把,  原来SQL语句还能这样用  酷 
      

  3.   


    我的意思是SELECT `sid` FROM `x_search` WHERE `id`=6 的结果是  (1,2) 不是1或者2
      

  4.   


    SELECT * FROM `x_shop` WHERE `id` IN(1,2) 可以查询两条SELECT * FROM `x_shop` WHERE `id` IN(SELECT `sid` FROM `x_search` WHERE `id`=6)  就不行,只能查到一条
      

  5.   

    你的“SELECT `sid` FROM `x_search` WHERE `id`=6 的结果是  1,2”
    只说返回的是有一条记录且 sid 的值是“1,2”,是吗?
    如果是则可写作
    SELECT * FROM `x_shop` WHERE find_in_set(`id`,(SELECT `sid` FROM `x_search` WHERE `id`=6))