《Mysql入門Mysql子查詢IN中使用LIMIT應(yīng)用示例》要點(diǎn):
本文介紹了Mysql入門Mysql子查詢IN中使用LIMIT應(yīng)用示例,希望對您有用。如果有疑問,可以聯(lián)系我們。
這兩天項(xiàng)目里出了一個(gè)問題,LIMIT使用后報(bào)錯(cuò).
需求是這樣的,我有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
)
結(jié)果報(bào)錯(cuò)了
當(dāng)時(shí)沒注意報(bào)的什么錯(cuò)誤,只是看到LIMIT什么的錯(cuò)誤,于是改了下代碼
代碼如下:
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>
這樣沒有報(bào)錯(cuò),莫離以為OK了,但是運(yùn)行后發(fā)現(xiàn),數(shù)據(jù)有問題
和單純的讀出申請表的內(nèi)容不一樣,才發(fā)現(xiàn)LIMIT的位置放錯(cuò)了,于是又把LIMIT發(fā)在IN里,結(jié)果報(bào)錯(cuò)如下
This version of MySQL doesn't yet support ‘LIMIT & IN/ALL/ANY/SOME subquery'
細(xì)看才知道,IN里不支持LIMIT.那怎么辦呢?
于是度娘后得知,在IN里再使用一張臨時(shí)表,把需要的內(nèi)容先查出來,
修改后代碼如下:
代碼如下:
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`
)
運(yùn)行后,問題辦理~~~
《Mysql入門Mysql子查詢IN中使用LIMIT應(yīng)用示例》是否對您有啟發(fā),歡迎查看更多與《Mysql入門Mysql子查詢IN中使用LIMIT應(yīng)用示例》相關(guān)教程,學(xué)精學(xué)透。維易PHP學(xué)院為您提供精彩教程。
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/10488.html