我們先看看MySQL官網文檔是怎么描述這個問題的:如下圖所示。
由上面可知:MySQL不允許SQL語句的嵌套語句內的when rownum=1等類似的分頁查詢,需要用到臨時變量來實現改造該功能
舉個例子:
Oracle中的SQL寫法如下:
select * from
oms_sub_tempdata
where rownum <= 10 order by dataid asc
MySQL改造之后的寫法如下:
select a.* from
(select b.*,@rownum := @rownum+1 AS rownum from oms_sub_tempdata b,(SELECT @rownum:=0) r) a
where rownum <= #{rownum} order by dataid asc