Heim >Backend-Entwicklung >PHP-Tutorial >关于mysql的子查询
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字段,并设置全文索引
两个问题,求助
SELECT a.* FROM `x_shop` AS a, `x_search` AS b WHERE a.id = b.sid AND b.id=6
没其他需求就用2把, 原来SQL语句还能这样用 酷
SELECT a.* FROM `x_shop` AS a, `x_search` AS b WHERE a.id = b.sid AND b.id=6
没其他需求就用2把, 原来SQL语句还能这样用 酷
全文索引性能是否很差
你主帖中的sql不行?
你主帖中的sql不行?
可是执行,但是假如结果为(1,2) 只查询1 其实也就是等于不行
in(1,2) 可以查询1和2 出来吧
in(1,2) 可以查询1和2 出来吧
SELECT * FROM `x_shop` WHERE `id` IN(1,2) 可以查询两条
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”
只说返回的是有一条记录且 sid 的值是“1,2”,是吗?
如果是则可写作
SELECT * FROM `x_shop` WHERE find_in_set(`id`,(SELECT `sid` FROM `x_search` WHERE `id`=6))
你的“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))
版主V587