下面是我写的一条查询第n行的记录,第1条查询:
SELECT * FROM TableName WHERE ID=(
SELECT A.ID FROM (Select Top n * From TableName) AS A
LEFT OUTER JOIN (Select Top n-1 * From TableName) AS B ON B.ID=A.ID
WHERE B.ID IS NULL )当我去掉第一条语句SELECT,如第2条查询:SELECT A.* FROM (Select Top n * From TableName) AS A
LEFT OUTER JOIN (Select Top n-1 * From TableName) AS B ON B.ID=A.ID
WHERE B.ID IS NULL 想象的结果会是第n条记录,但我错了,查询返回的结果是1到n条记录。
我再修改语句成,第3条查询:SELECT A.* ,B.* FROM (Select Top n * From TableName) AS A
LEFT OUTER JOIN (Select Top n-1 * From TableName) AS B ON B.ID=A.ID
WHERE B.ID IS NULL
返回的是只是第n条记录,与我要的结果基本相似,但多了个B.* 呵呵问大家,如何理解第2,3条查询语句??
SELECT * FROM TableName WHERE ID=(
SELECT A.ID FROM (Select Top n * From TableName) AS A
LEFT OUTER JOIN (Select Top n-1 * From TableName) AS B ON B.ID=A.ID
WHERE B.ID IS NULL )当我去掉第一条语句SELECT,如第2条查询:SELECT A.* FROM (Select Top n * From TableName) AS A
LEFT OUTER JOIN (Select Top n-1 * From TableName) AS B ON B.ID=A.ID
WHERE B.ID IS NULL 想象的结果会是第n条记录,但我错了,查询返回的结果是1到n条记录。
我再修改语句成,第3条查询:SELECT A.* ,B.* FROM (Select Top n * From TableName) AS A
LEFT OUTER JOIN (Select Top n-1 * From TableName) AS B ON B.ID=A.ID
WHERE B.ID IS NULL
返回的是只是第n条记录,与我要的结果基本相似,但多了个B.* 呵呵问大家,如何理解第2,3条查询语句??
select *
from (select top n * from yourtable) aa
where not exists(select * from (select top n-1 * from yourtable) bb where aa.id=bb.id)
但返回的结果也是1到n行记录,有时是n比较大的时候,只能返回1到m(m<n)条记录。不解!!!