首頁 > 後端開發 > php教程 > 关于mysql的子查询

关于mysql的子查询

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
發布: 2016-06-23 14:24:38
原創
924 人瀏覽過

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
登入後複製
登入後複製


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

没其他需求就用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

相關標籤:
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
MySQL 5.7中的子查詢插入失敗
來自於 1970-01-01 08:00:00
0
0
0
在LARAVEL中使用OR和AND的MYSQL來查詢Where子句
來自於 1970-01-01 08:00:00
0
0
0
查詢中的 Order 子句花了太多 MySQL 載入時間
來自於 1970-01-01 08:00:00
0
0
0
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板