mysql 子查询中 使用 limit

如果sql语句中的子查询包含limit

例如: select * from a where id in (select id from b limit 3)

会报错:This version of MySQL doesn’t yet support ‘LIMIT & IN/ALL/ANY/SOME subquery‘ #

解决办法:

1、加一层子查询

例如:select * from a where id in (select t.id from (select id from b limit 3 )as t)

2、把限制条件放到from而非where子句中,就不必出现嵌套再嵌套。

例如:select * from (select id from a limit 3) as foo

原文地址:https://www.cnblogs.com/-mrl/p/12106183.html

时间: 2024-08-02 06:18:43

mysql 子查询中 使用 limit的相关文章

子查询中不能使用limit或者in

select * from  wechat_account_info  where id in(select id from wechat_account_info where groupId ='8' ORDER BY id limit 15  ) as s 此句执行中会出现如下错误: [Err] 1235 - This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery' 原因: MYSQL子查询不支持

Mysql——子查询

子查询的位置: select 中.from 后.where 中.group by 和order by 中无实用意义. 子查询分为如下几类: 1,标量子查询:返回单一值的标量,最简单的形式. 2,列子查询:返回的结果集是 N 行一列. 3,行子查询:返回的结果集是一行 N 列. 4,表子查询:返回的结果集是 N 行 N 列. 可以使用的操作符:= > < >= <= <> ANY IN SOME ALL EXISTS 标量子查询:是指子查询返回的是单一值的标量,如一个数字

MySQL 子查询

-- 商品类别表 --CREATE TABLE category( cat_id INT PRIMARY KEY AUTO_INCREMENT,#类别编号 cat_name VARCHAR(30) NOT NULL#类别名称); -- 商品表 --CREATE TABLE goods( goods_id INT PRIMARY KEY AUTO_INCREMENT,#商品编号 goods_name VARCHAR(30) NOT NULL,#商品名称 goods_price DOUBLE,#商品

MySQL子查询的优化

一.MySQL子查询的位置 当一个查询是另一个查询的子部分是,称之为子查询(查询语句中嵌套含有查询语句).子查询也是使用频率比较高的一种查询类型.因此,优化子查询,对于整个系统的性能也有直接的影响. 从查询出现在SQL语句的位置来看,它可以出现在目标列中,也可以出现在from子句中,还可以出现在JOIN/ON子句.GROUPBY子句.HAVING子句.ORDERBY子句等位置.下面依次来看这几种形式的子查询,以及对他们进行优化的一些想法. 1.子查询出现在目标列位置 当子查询出现在目标列位置的时

MySQL子查询有哪五种形式?

MySQL是一个关系型数据库管理系统,由瑞典MySQLAB公司开发,目前属于Oracle旗下产品.MySQL是最流行的关系型数据库管理系统之一,在web应用方面,MySQL是最好的RDBMS(RelationalDatabaseManagementSystem,关系数据库管理系统)应用软件. mysql从4.1版开始支持子查询功能,在此版本前,可以用join写连表查询来进行替代,但不推荐这么写,相当的麻烦.以下是mysql子查询的几种常见写法: 1.select*fromxxxwherecol=

MySQL 子查询(三) 派生表、子查询错误

From MySQL 5.7 ref:13.2.10.8 Derived Tables 八.派生表 派生表是一个表达式,用于在一个查询的FROM子句的范围内生成表. 例如,在一个SELECT查询的FROM子句中的子查询,就是一个派生表. SELECT ... FROM (subquery) [AS] tbl_name ... [AS] tbl_name子句是必需的,因为FROM子句中的每个表都必须具有名称.且派生表中的任何列都必须具有唯一名称. 为了便于说明,假设现在有这样一个表: CREATE

MySql子查询(where、from、exists)及连接查询(left join、right join、inner join、union join)

目录 一.子查询 1.where型子查询:把内层查询的结果作为外层查询的比较条件 2.from型子查询:把内层的查询结果当成临时表,供外层sql再次查询.查询结果集可以当成表看待.临时表要使用一个别名. 3.exists型子查询:把外层sql的结果,拿到内层sql去测试,如果内层的sql成立,则该行取出.内层查询是exists后的查询. 4. any, in 子查询 子查询总结: 二.连接查询 1.全相乘(不是全连接.连接查询),全相乘是作笛卡尔积 2.左连接查询 left join ... o

mysql子查询慢的问题

当你在用explain工具查看sql语句的执行计划时,若select_type 字段中出现"DEPENDENT SUBQUERY"时,你要注意了,你已经掉入了mysql子查询慢的"坑"...下面我们来看一个具体的例子 有这样一条查询语句: SELECT gid,COUNT(id) as count FROM shop_goods g1 WHERE status =0 and gid IN (SELECT gid FROM shop_goods g2 WHERE si

MySQL子查询

到目前为止我们所看到的SELECT语句都是简单查询,即从单个数据库表中检索数据的单条语句.SQL还允许创建子查询,即嵌套在其他查询语句中的查询. 下面给出嵌套查询的例子. 一个表示存储订单信息,包括订单号,客户ID,订单日期等,如下所示: 一张表示存储订单物品信息,如下: 还有一张表存储的是客户的信息,如下: 假如现在的需求是要找出订购物品TNT2的所有客户.我们发现通过第二张订购物品表能够获取到订单编号,依据订单编号,可以再第一张订单信息表中获取到相应的客户id,通过客户id即可以在第三张表中