程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> Mysql子查詢IN中應用LIMIT運用示例

Mysql子查詢IN中應用LIMIT運用示例

編輯:MySQL綜合教程

Mysql子查詢IN中應用LIMIT運用示例。本站提示廣大學習愛好者:(Mysql子查詢IN中應用LIMIT運用示例)文章只能為提供參考,不一定能成為您想要的結果。以下是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`
)

運轉後,成績處理~~~
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved