Mysql子查询IN中使用LIMIT应用示例

 更新时间:2014年01月24日 17:18:29   作者:  
有3张表,infor信息表,mconfig物料配置表,maaply物料申请表,要求是读出申请表中哪些人申请哪些物料,接下来为大家介绍下Mysql子查询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`
)

运行后,问题解决~~~

相关文章

  • Mysql之索引长度限制方式

    Mysql之索引长度限制方式

    这篇文章主要介绍了Mysql之索引长度限制方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • Mysql TIMESTAMPDIFF函数示例详解

    Mysql TIMESTAMPDIFF函数示例详解

    这篇文章主要介绍了Mysql TIMESTAMPDIFF函数示例详解,TIMESTAMPDIFF函数返回datetime_expr2 - datetime_expr1的结果,其中datetime_expr1和datetime_expr2可以是DATE或DATETIME类型值,本文给大家详细讲解,需要的朋友可以参考下
    2023-03-03
  • 关于JDBC与MySQL临时表空间的深入解析

    关于JDBC与MySQL临时表空间的深入解析

    这篇文章主要给大家介绍了关于JDBC与MySQL临时表空间的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-09-09
  • 如何区分MySQL的innodb_flush_log_at_trx_commit和sync_binlog

    如何区分MySQL的innodb_flush_log_at_trx_commit和sync_binlog

    这篇文章主要介绍了如何区分MySQL的innodb_flush_log_at_trx_commit和sync_binlog,帮助大家更好的理解和使用MySQL数据库,感兴趣的朋友可以了解下
    2021-02-02
  • mysql 数据库基础笔记

    mysql 数据库基础笔记

    mysql 数据库基础笔记,刚开始接触mysql的朋友可以参考下
    2012-07-07
  • MySQL 数据库 增删查改、克隆、外键 等操作总结

    MySQL 数据库 增删查改、克隆、外键 等操作总结

    这篇文章主要介绍了MySQL 数据库 增删查改、克隆、外键 等操作,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • mysql触发器中监控字段的改变方式

    mysql触发器中监控字段的改变方式

    这篇文章主要介绍了mysql触发器中监控字段的改变方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • mysql 8.0.16 Win10 zip版本安装配置图文教程

    mysql 8.0.16 Win10 zip版本安装配置图文教程

    这篇文章主要为大家详细介绍了mysql 8.0 Win10 zip版本安装配置图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-06-06
  • 详解mysql三值逻辑与NULL

    详解mysql三值逻辑与NULL

    这篇文章主要介绍了mysql三值逻辑和NULL,感兴趣的同学们,可以参考下,并且把代码实验一下
    2021-05-05
  • centos7下安装mysql6初始化安装密码的方法

    centos7下安装mysql6初始化安装密码的方法

    这篇文章主要介绍了centos7下安装mysql6初始化安装密码的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06

最新评论