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数据库自动补全命令的三种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • MySQL5.7.21解压版安装详细教程图解

    MySQL5.7.21解压版安装详细教程图解

    对于小编来说安装系统软件是常干的事情,今天小编抽空给大家整理了MySQL5.7.21解压版安装详细教程图解,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧
    2018-09-09
  • MAC下修改mysql默认字符集为utf8的方法

    MAC下修改mysql默认字符集为utf8的方法

    本文主要介绍了如何修改MAC版mysql默认字符集为utf8,如果你的MAC版mysql字符乱码,可以参考一下这篇文章
    2018-03-03
  • MySQL中的insert set 和 insert values用法

    MySQL中的insert set 和 insert values用法

    这篇文章主要介绍了MySQL中的insert set 和 insert values用法说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • MySQL数字类型自增的坑

    MySQL数字类型自增的坑

    这篇文章主要介绍了MySQL数字类型自增的坑,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05
  • MySQL中通过EXPLAIN如何分析SQL的执行计划详解

    MySQL中通过EXPLAIN如何分析SQL的执行计划详解

    这篇文章主要给大家介绍了关于MySQL中通过EXPLAIN如何分析SQL的执行计划的相关资料,文中通过图文以及示例代码介绍的非常详细,对大家的学习或者工作具有一定的安康学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-08-08
  • MySQL5.5版本安装与安装失败详细讲解

    MySQL5.5版本安装与安装失败详细讲解

    MySQL是一款安全、跨平台、高效的,并与PHP、Java等主流编程语言紧密结合的数据库系统,下面这篇文章主要给大家介绍了关于MySQL5.5版本安装与安装失败详细讲解的相关资料,需要的朋友可以参考下
    2023-03-03
  • 数据库连接池以及sequelize实现增删改查等操作指南

    数据库连接池以及sequelize实现增删改查等操作指南

    Sequelize的连接需要传入参数,并且可以配置开启线程池、读写分库等操作,下面这篇文章主要给大家介绍了关于数据库连接池以及sequelize实现增删改查等操作的相关资料,需要的朋友可以参考下
    2022-08-08
  • 阿里云下配置MySQL远程连接的步骤详解

    阿里云下配置MySQL远程连接的步骤详解

    大家都知道阿里云默认是不能用客户端远程连接的,但最近因为工作的需要,不得不实现远程连接,下面这篇文章主要给大家介绍了在阿里云下配置MySQL远程连接的步骤,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-08-08
  • CentOS7安装MySQL 8.0.26的过程

    CentOS7安装MySQL 8.0.26的过程

    这篇文章主要介绍了CentOS 7安装MySQL 8.0.26的过程,通过输入一些命令完成对mysql的初始化及相关配置,具体操作方法跟随小编一起看看吧
    2021-09-09

最新评论