关于mysql的子查询
程序员文章站
2022-04-19 11:42:08
...
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 `sid` FROM `x_search` WHERE `id`=6 的结果是 (1,2) 不是1或者2
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
推荐阅读
-
关于PHP操作MYSQL的有关问题
-
Access SQL Select语句和子查询结果之间的连接讲解
-
mysql-关于Azure上Mysql和MongoDB的问题
-
MySQL5.6如何优化慢查询的SQL语句--慢日志介绍_MySQL
-
优化MySQL数据库查询的三种方法_MySQL
-
select-mysql 嵌套查询,一个表的多个字段 作为另一个表的条件,求高手
-
php使用mysql_query查询超大结果集超内存的解决方法,phpmysql_query_PHP教程
-
MYSQL查询 三列中的最大值
-
关于连接mysql数据库时出现的时区错误timezone的解决办法
-
mysql分组查询查询每个组前面40条数据里面某个字段不能连续超过8条为空的记录,请大神指导