在编程中,经常会用到取数据库中某一段的记录,如果要取前几条记录都是很简单,在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,请采纳