Mysql子查询IN中使用LIMIT应用示例
发布时间:2024-01-27 01:44:17
标签:子查询,IN,LIMIT
这两天项目里出了一个问题,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`
)
运行后,问题解决~~~


猜你喜欢
- 一、概述:Python的GC模块主要运用了“引用计数”(reference counting)来跟踪和回收垃圾。在引用计数的基础上,还可以通
- 1.跨域原理1. 首先浏览器安全策略限制js ajax跨域访问服务器2. 如果服务器返回的头部信息中有当前域:// 允许 http://lo
- 在做我的友情链接批量检查工具过程中,碰到一些情况,就是对方网页会用gzip压缩。用gzip压缩的好处是,能压缩网页大小,加快网页的浏览速度,
- 如何使用Iframe实现本页提交?例:chunfeng.html< html>< head>&n
- 阅读前:Pro Javascript Techniques翻译连载说明和目录JavaScript的演化是渐进而稳固的。历经过去十年的进程,J
- 如何编写CSS代码才能更有效率?这是许多网页制作者与开发者都关心的问题。大概没有什么魔法,可以保证一下就把你的样式表缩小到百分之多少,但合理
- 于是就测试了下: var stringToDom=function(text) { var doc; if(window.ActiveXOb
- matlab中的filter函数:y = filter(b,a,x)python实现matlab中的filter函数def filter_m
- 多支付原理1.利用鸭子类型。规定前台传过来支付方式。pay_methon2.再支付方式里面实现pay(名字统一)方法3.回调函数,在支付方式
- 1、准备数据以下操作将在该表中进行create table student ( id int unsigned primary key au
- 1、下载地址:MySQL官网2、解压解压之后的文件里边是没有data文件的,需要创建一个空文件夹命名为data(后面需要用),并且需要创建一
- get和post方法最大的不同在于:1.get方法传值参数在url里面,而post参数放send里面2.post方法必须加上xmlHttp.
- 最近对动易CMS有个研究任务,具体研究什么,嘿嘿,保密。网络收集了九个常见的错误原因分析及解决方法错误提示: ADODB.Recordset
- 由于HTTP协议是无状态协议,所以服务器与客户端通过http协议通讯时,服务器不能记录客户端的信息。为了解决这个问题,通过 Cookie 和
- 我想让一片文章,每到3000字就分到下一条插入到数据库,求高手 <%Dim Content Conte
- 调用python自带的GUI制作库一开始想用Tkinter制作GUI的,网上说是python自带的,结果输入:import tkinter后
- 在python中,用于数组拼接的主要来自numpy包,当然pandas包也可以完成。而,numpy中可以使用append和concatena
- 本文实例讲述了php简单定时执行任务的实现方法。分享给大家供大家参考。具体实现方法如下:<?phpignore_user_abort(
- 有时候我们会有这样的需求,需要把一些数据从别的库导入到另外的一个库中,而这些数据是用CSV文件存放的。对于MySql数据库我们有两种方式:一
- views.py 视图文件 message = None all_message = UserMessage.obj