在編程中,經常會用到取資料庫中某一段的記錄,如果要取前幾條記錄都是很簡單,在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 接受一個或兩個數字參數。參數必須是一個整數常量。如果給定兩個參數,第一個參數指定第一個返回記錄行的偏移量,第二個參數指定返回記錄行的最大數目。
『貳』 sql server2000 中的怎樣查詢指定行之間的數據
sql
server2000中,沒有按行號提取結果的SQL語句,只能把數據按一定方式排序後,取前幾條,取不了中間的:
select
top
n
*
from
proct
或者給proct加ID,然後按ID來取。
其他除非自己寫存貯過程了,但那也不是LZ想要的答案。
『叄』 查詢表中中間的一行數據的Sql語句
先把第二題給你
selecta.id,a.dptid,isnull(b.department,'黑人')department,a.name
onb.id=a.dptid
第一題稍等
第一題
selectpid,
sum(casewhens_id=༽'then1else0end)s1_id,
sum(casewhens_id=༾'then1else0end)s2_id,
sum(casewhens_id=༿'then1else0end)s3_id
fromA
groupbypid
『肆』 SQL Server如何取得某一列中的某一行數據
SQL Server如何取得某一列中的某一行數據?
按你的意思查詢出來的只是一個值,列與行的交叉只有一個數據.
SELECT [列名] FROM [表名] WHERE [列名]=值
如果要顯示某列數值
SELECT [列名] FROM [表名]
如果顯示某列值為定值時的一行
SELECT * FROM [表名] WHERE [列名]=已知值
『伍』 SQL Server中取數據集中間行數據
select name,age from (select name,age,rank() over(order by age) as RN from STUDENT order by age) as a where RN=300
『陸』 sql 取中間幾條記錄
--從Table 表中取出第 m 條到第 n 條的記錄:(Not In 版本)
SELECT TOP n-m+1 * FROM Table WHERE (id NOT IN (SELECT TOP m-1 id FROM Table ))
--從TABLE表中取出第m到n條記錄 (Exists版本)
SELECT TOP n-m+1 * FROM TABLE AS a WHERE Not Exists
(Select * From (Select Top m-1 * From TABLE order by id) b Where b.id=a.id )
Order by id
--m為上標,n為下標,例如取出第8到12條記錄,m=8,n=12,Table為表名
Select Top n-m+1 * From Table
Where Id(Select Max(Id) From
(Select Top m-1 Id From Table Order By Id Asc) Temp)
-----------------------------------------------------------------------------------------------------------------------------------------
表pictures中有兩個欄位:id與title。id是自動編號的
表中有5條記錄:1--p1,2--p2,3--p3,4--p4,5--p5
一、找到了一個小規律
string sqlstr = "select top 4 * from pictures order by id desc "; //查詢結果p5,p4,p3,p2---說明是整個表先進行排序,再進行查詢的
string sqlstr = "select top 3 * from (select top 4 * from pictures order by id desc) "; //-------p5,p4,p3
string sqlstr = "select top 3 * from (select top 4 * from pictures order by id desc) order by id desc";//-------p5,p4,p3
string sqlstr = "select top 3 * from (select top 4 * from pictures order by id desc) order by id asc"; //-------p2,p3,p4
二、獲取單條記錄:
假設表中一共有counts條記錄,現在想要查詢第n條記錄,則sql語句應是:
select top 1 * from (select top (counts-n+1) * from pictures order by id desc) order by id asc
第三條記錄:
string sqlstr = "select top 1 * from (select top 3 * from pictures order by id desc) order by id asc";//-------p3
三、獲取表中多條連續的記錄
假設表中一共有counts條記錄,現在想要查詢第n到第m條的記錄,則sql語句應是:
select top (m-n+1) * from (select top (counts-n+1) * from pictures order by id desc) order by id asc
獲取第二到第四條記錄:
『柒』 sql中截取字元串中間數據
select
substring(欄位名,charindex('-',欄位名,0)+1,len(欄位名)-charindex('-',reverse(欄位名),0)-charindex('-',欄位名,0))
from
表名
substring是截取函數
charindex是算特定符號位置的函數
reverse是把字元串排反序的函數
了解一下這三個函數吧,這句你就應該懂了,我這句剛才試驗了一下,沒問題,環境sqlserver2000
請採納。
『捌』 sql怎麼查詢一個表中中間的數據
select top 12 * from (select top 24 * from table order by id ) order by id desc
先正序取前24條,再倒序取其中的前12條 ,25-36之間在數據改一個地方:
select top 12 * from (select top 36 * from table order by id ) order by id desc
『玖』 sql從查詢結果中選擇中間某部分記錄
我說1個笨方法哈
select top 300 * into #table from table order by 排序條件
delete top 199 * from #table order by排序條件
select * from #table order by 排序條件
說明:
這是用虛擬表寫的,方法比較笨,簡單的鐵定會有,你多想想
我是採取取出來目的記錄,然後過濾掉不要的記錄,剩下的就是你想要的了
因為你是要200~300條,所以必須要有按什麼來排序的條件,排序不同,結果也不同的
你試試,OK,請採納