oracle的分頁查詢可以利用rowid偽列。 db2的分頁查詢可以利用row_number() over()聚合函數。 mysql有limit。 access仿佛先天缺陷,僅提供了top n。那如何利用top來實現分頁查詢呢? 假設在access中有表t1 create table t1( tc1 varchar(50) not null primary key, tc2 varchar(30), tc3 varchar(30) ) 隨機插入20條數據。如果以每頁5條來顯示數據,如果要顯示11至15條如何顯示?利用top n功能,前11條可以用以下sql完成。 select top 11 tc1,tc2,tc3 from t1 同樣前15條也可以這樣: select top 15 tc1,tc2,tc3 from t1 想要得到11條到15條,估計一般都會想到差集,但access沒提供差集except,可以利用not in實現。 select top 15 tc1,tc2,tc3 from t1 where tc1 not in (select top 10 tc1 from t1) 如果是一個比較大的表,用not in不能利用索引,使和效率極其低下,又該如何呢?可以利用左連接來解決問題 select a.* from ( select top15 tc1,tc2,tc3 from t1) a left join ( select top 10 tc1,tc2,tc3 from t1 ) b on a.tc1=b.tc1 where iif(b.tc1,'0','1')='1' 這種sql的好處是顯而易見的,他有效的利用了表的主鍵索引。當然,由於access不能這樣判斷b.tc1 is null,所以要改用iif(b.tc1,'0','1')='1' 來曲線救國