面试问题:
编写SQL Server查询以返回表A的第30到第40条记录
我的回答:
select top 10 * from (select top 40 * from tb desc) asc
select top 40 * from A where id not in(select top 30 id from A)
以上哪个更有效率?为什么呢?
答案 0 :(得分:6)
不要使用其中任何一种,你可以直接选择那些30-40行
答案 1 :(得分:1)
使用Row_number()可能是最好的方法!
;With CTETable AS
(
SELECT ROW_NUMBER() OVER (ORDER BY Column_Name DESC) AS ROW_NUM, * FROM tb WHERE <CONDITION>
)
SELECT Column_List FROM CTETable WHERE ROW_NUM BETWEEN <StartNum> AND <EndNum>