sql讀取語句
① sql讀取語句如何實現從第多少行讀到多少行
主要有以下幾中方式來實現:
1.EJB的Find方法
2.在顯示第一頁前將所有的記錄放在collection對象中,後續的各頁都在內存中取。
3.每一頁都到資料庫作一次重復的查詢,然後將符合條件的記錄顯示出來。
4.保存前幾頁的搜索結果在內存中(經常使用到的),後續的記錄(這些數據是多數用戶都沒有耐心看的)再通過連資料庫取得。
5.其他各種cache機制。
例子:
查詢t_table表中所有記錄第10到20條,按id排序。
SQL語句為:
SELECT * FROM t_table t1 WHERE (SELECT count(*) FROM t_table t2 WHERE t2.id <t1.id ) > = 10 AND (SELECT count(*) FROM t_table t2 WHERE t2.id < t1.id ) < 20
② 資料庫讀取中間幾條記錄的SQL語句
在編程中,經常會用到取資料庫中某一段的記錄,如果要取前幾條記錄都是很簡單,在asp中,直接用top就可以了,在php中,用limit就可以,但如果要取資料庫中的第 N 條到第 N條怎麼辦呢,也就是要取資料庫中間的數據,在php,取中間的數據,可以用 limit 很自然的就實現了,主要是asp編程中,需要在sql語句中再重新嵌入一個 sql語句,下面看看 asp 和 php 中不同的 sql 讀取中間幾條記錄。1 Access 採用top從表中取出第 M 條到第 N 條的記錄(如N=M+10) select top N-M+1 * from [tableName] where (id not in (select top M-1 id from [tableName]))
select top N-M+1 * from [tableName] as a where not exists (select * from (select top M-1 * from [tableName] order by id) b where b.id=a.id ) order by id 注意:上述語句不能取從第1條到第N條的數據(即M=1時失效),因為select top N ……中N必須從1開始(參考:資料庫讀取前幾條記錄的SQL語句大全):此問題的解決辦法:要取第1到N條的記錄,需要使用select top N …… 解決。取資料庫第20到第30條中間的十條記錄的sql語句
select top 10 * from [tableName] where id not in (select top 20 id from [tableName] order by id)刪除前10行 delete from [tableName] where id in(select top 10 id from [tableName])
2 MySql 採用limit limit 子句可以被用於強制 select 語句返回指定的記錄數。limit 接受一個或兩個數字參數。參數必須是一個整數常量。如果給定兩個參數,第一個參數指定第一個返回記錄行的偏移量,第二個參數指定返回記錄行的最大數目。