学习下Mysql子查询IN中使用LIMIT的方法。

这两天项目里出了一个问题,mysql LIMIT使用后报错。

需求是这样的,我有3张表,infor信息表,mconfig物料配置表,maaply物料申请表,要求是读出申请表中哪些人申请哪些物料

于是,首先这样写:

SELECT infor.name,infor.phone,infor.add,

mconfig.mname,mapply.acount,from_unixtime(mapply.atime,'%Y-%m-%d') as 'atime'

FROM mapply right JOIN infor ON mapply.uid = infor.uid inner JOIN mconfig ON mapply.mid = mconfig.mid

WHERE mapply.aid

IN (

SELECT aid

FROM `mapply` where state = $state

ORDER BY `atime` , `uid` DESC

LIMIT 0,10

) www.jbxue.com

结果报错了

当时没注意报的什么错误,只是看到LIMIT什么的错误,于是修改以下代码:

SELECT infor.name,infor.phone,infor.add,

mconfig.mname,mapply.acount,from_unixtime(mapply.atime,'%Y-%m-%d') as 'atime'

FROM mapply right JOIN infor ON mapply.uid = infor.uid inner JOIN mconfig ON mapply.mid = mconfig.mid

WHERE mapply.aid

IN (

SELECT aid

FROM `mapply` where state = $state

ORDER BY `atime` , `uid` DESC

)

LIMIT 0,10

这样没有报错,莫离以为OK了,但是运行后发现,数据有问题

和单纯的读出申请表的内容不一样,才发现LIMIT的位置放错了,于是又把LIMIT发在IN里,结果报错如下

This version of MySQL doesn't yet support ‘LIMIT & IN/ALL/ANY/SOME subquery'

细看才知道,IN里不支持LIMIT。那怎么办呢?www.jbxue.com

于是度娘后得知,在IN里再使用一张临时表,把需要的内容先查出来,

修改后:

SELECT infor.name,infor.phone,infor.add,

mconfig.mname,mapply.acount,from_unixtime(mapply.atime,'%Y-%m-%d') as 'atime'

FROM mapply right JOIN infor ON mapply.uid = infor.uid inner JOIN mconfig ON mapply.mid = mconfig.mid

WHERE mapply.aid

IN (

SELECT aid

FROM (SELECT `aid` FROM `mapply` where state = $state

ORDER BY `atime` , `uid` DESC

LIMIT 0,10)AS `tp`

)

运行后,问题解决!

mysql用in报错_Mysql子查询IN中使用LIMIT相关推荐

  1. mysql not in报错_mysql从5.7升级到8.0查询报错Expression #2 of SELECT list is not in GROUP BY...

    报错信息: Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'sss. ...

  2. mysql的count报错_Mysql报错注入原理分析(count()、rand()、group by)

    报错需要count(*),rand().group by,三者缺一不可 前提:当行数大于等于3行时才会报错. 原链接:https://www.cnblogs.com/xdans/p/5412468.h ...

  3. mysql 绕过select报错_MySQL注射绕过技巧(三)

    在测试一次注入的时候发现过滤了逗号 所以找到这个思路 第一次遇到的时候是看key哥挖洞  遇到后就想记录下来 正文 过滤了逗号  利用join来逐步查询 select*from(select 1)a ...

  4. mysql语句delete报错_MySQL delete语句的问题

    以前遇到过几次这个问题,都觉得问题不大,所以没有记录,但是这次又遇到了,而且没有第一时间想起来,所以还是有记录下的必要 MySQL    delete语句使用子查询操作同一张表的时候会抛出 DELET ...

  5. mysql的count报错_mysql的floor()报错注入方法详细分析

    刚开始学习sql注入,遇见了 select count(*) from table group by floor(rand(0)*2); 这么条语句.在此做个总结. (更好的阅读体验可访问 这里 ) ...

  6. mysql的count报错_Mysql报错注入原理分析count、rand、groupby

    0x00 疑问 一直在用mysql数据库报错注入方法,但为何会报错? 百度谷歌知乎了一番,发现大家都是把官网的结论发一下截图,然后执行sql语句证明一下结论,但是没有人去深入研究为什么rand不能和o ...

  7. mysql 3种报错_MySQL读取Binlog日志常见的3种错误-阿里云开发者社区

    MySQL读取Binlog日志常见的3种错误 mysqlbinlog: [ERROR] unknown variable 'default-character-set=utf8mb4' 当我们在my. ...

  8. mysql严格模式 报错_mysql严格模式

    mysql严格模式 严格模式例子1 2 3 4 5 6 7DB::table('table_name') ->where('status', 1) ->select(DB::raw('su ...

  9. mysql安装开始报错_MYSQL安装报错 -- 出现Failed to find valid data directory.

    运行环境:windows10 数据库版本:mysql.8.0.12 安装方式:rpm包直接安装 问题描述: mysql初始化的时候找不到对应的数据库存储目录 报错代码: 2018-10-13T03:2 ...

最新文章

  1. win下的输入流结束符
  2. Linux 下各个目录的作用及内容
  3. 兰蔻和雅诗兰黛哪个好_兰蔻、雅诗兰黛、修丽可,这些大牌护肤品,你会选择谁?...
  4. JavaScript页面校验
  5. 【tensorflow】tf-tf.where(condition, x, y, name)
  6. 详解 Too many open files
  7. bootbox显示中文的按钮
  8. 前端学习(3000):vue+element今日头条管理--远程仓库的issue
  9. embedding亦福亦祸?XGBoost与LightGBM的新机遇
  10. 三面阿里竟然败在了 volatile 关键字上
  11. listview添加item动画
  12. Tensorflow API解析 -目录
  13. Revit二次开发: 文件损坏
  14. 【S-V信道】基于毫米波的5G通信S-V信道模型仿真
  15. mybatis缓存的一些问题
  16. 2019级软件工程应用与实践-人工智能快递柜(代码分析11)
  17. Factory method 'springSecurityFilterChain' threw exception
  18. 华科计算机学院专业课,华科计算机考研专业课有哪些
  19. AVPlayer就可以播放在线音频
  20. WZOI-359字符串哈希

热门文章

  1. C#基础之 集合-队列
  2. Java面试笔试题整理
  3. django 框架中应用 redis 集群(亲测)
  4. CSS中提升优先级属性!important的用法总结
  5. C语言运行界面字体,C语言实现图形界面登陆窗口.docx
  6. Linux基础知识(1)
  7. mysql8.0 linux 安装教程_linux下mysql8.0安装详细教程
  8. 服务器输入字符在客户端显示,管理 Unicode 服务器与非 Unicode 客户端之间的数据转换...
  9. java excel转word表格_java利用poi生成/读取excel表格、生成word
  10. small用于不连续数组_Excel公式技巧19: 在方形区域内填充不重复的随机整数