于是我先是这样写的: 复制代码 代码如下: 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>
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` )