Mysql子查询IN中使用LIMIT应用示例
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Mysql子查询IN中使用LIMIT应用示例,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2100字,纯文字阅读大概需要4分钟。
内容图文
这两天项目里出了一个问题,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
)
结果报错了
当时没注意报的什么错误,只是看到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
)
<pre name="code" class="sql">LIMIT 0,10</pre>
这样没有报错,莫离以为OK了,但是运行后发现,数据有问题
和单纯的读出申请表的内容不一样,才发现LIMIT的位置放错了,于是又把LIMIT发在IN里,结果报错如下
This version of MySQL doesn't yet support ‘LIMIT & IN/ALL/ANY/SOME subquery'
细看才知道,IN里不支持LIMIT。那怎么办呢?
于是度娘后得知,在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中的子查询操作
- MySQL中表子查询与关联子查询的基础学习教程
- 详解MySql基本查询、连接查询、子查询、正则表达查询
- MySQL子查询的几种常见形式介绍
- MySQL的子查询中FROM和EXISTS子句的使用教程
- mysql in语句子查询效率慢的优化技巧示例
- 浅谈MySQL中的子查询优化技巧
- mysql优化系列 DELETE子查询改写优化
- MySQL优化之使用连接(join)代替子查询
- MYSQL子查询和嵌套查询优化实例解析
- MySQL子查询操作实例详解
内容总结
以上是互联网集市为您收集整理的Mysql子查询IN中使用LIMIT应用示例全部内容,希望文章能够帮你解决Mysql子查询IN中使用LIMIT应用示例所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。