mysql子查询中不能使用LIMIT

mysql子查询中不能使用LIMIT

/*
今天遇到个问题,如下:
This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'
*/

直接po截图和代码

我们可以通过LIMIT来删除表中的数据

第一个案例如下:

第二个案例如下:

/*
今天遇到个问题,如下:
This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'
*/

#删除admin表中50条记录,并且是从第3条记录开始删
#报错
DELETE FROM admin WHERE 1 = 1 LIMIT 2,50;
#报错
DELETE FROM admin LIMIT 2,50;
#会报错(子查询中是不能使用LIMIT的)
DELETE FROM admin WHERE id IN (SELECT id FROM admin LIMIT 2,50);
#删除成功(#但是在有LIMIT关键字的子查询的外面再包一层就可以了),以下sql语句正确执行
DELETE FROM admin WHERE id IN (SELECT ad.id FROM (SELECT id FROM admin LIMIT 2,50) AS ad);#记得取别名

#以下查询语句都可以正确执行
SELECT id FROM admin LIMIT 2,50;
SELECT * FROM (SELECT id FROM admin LIMIT 2,50) AS ad;
SELECT ad.* FROM (SELECT id FROM admin LIMIT 2,50) AS ad;
SELECT * FROM (SELECT id FROM admin LIMIT 2,50) ad;
SELECT ad.id FROM (SELECT id FROM admin LIMIT 2,50) AS ad;
SELECT id FROM (SELECT id FROM admin LIMIT 2,50) AS ad;
#

#

#子查询中是不能使用LIMIT的,以下sql语句报错
SELECT * FROM admin WHERE id IN (SELECT id FROM admin LIMIT 2,50);
#但是在有LIMIT关键字的子查询的外面再包一层就可以了,以下sql语句正确执行
SELECT * FROM admin WHERE id IN (SELECT adm.id FROM (SELECT id FROM admin LIMIT 2,50) AS adm);#记得取别名


#
CREATE TABLE admin2 SELECT * FROM admin;
#
SELECT * FROM admin2;
#
SELECT * FROM admin2 WHERE id IN
(SELECT ad.id FROM (SELECT id FROM admin2 LIMIT 2,3) AS ad);
#
SELECT * FROM admin2 WHERE id IN
(SELECT ad.id FROM (SELECT id FROM admin2 LIMIT 4,2) AS ad);
#
SELECT * FROM admin2 WHERE id IN
(SELECT ad.id FROM (SELECT id FROM admin2 LIMIT 2,3) AS ad)
OR id IN (SELECT ad.id FROM (SELECT id FROM admin2 LIMIT 4,2) AS ad);

#删除数据
DELETE FROM admin2 WHERE id IN
(SELECT ad.id FROM (SELECT id FROM admin2 LIMIT 2,3) AS ad)
OR id IN (SELECT ad.id FROM (SELECT id FROM admin2 LIMIT 4,2) AS ad);

#
SELECT * FROM admin2 WHERE id IN
(SELECT ad.id FROM (SELECT id FROM admin2 LIMIT 3,4) AS ad)
OR id IN (SELECT ad.id FROM (SELECT id FROM admin2 LIMIT 12,2) AS ad);

#删除数据
DELETE FROM admin2 WHERE id IN
(SELECT ad.id FROM (SELECT id FROM admin2 LIMIT 3,4) AS ad)
OR id IN (SELECT ad.id FROM (SELECT id FROM admin2 LIMIT 12,2) AS ad);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值