我想知道如何在T-SQL中检索 - 比方说 - 总行数的1/2来自表格(基于某些标准)甚至前50行(基于某些标准)?
答案 0 :(得分:3)
选择前50行:
SELECT TOP 50 *
FROM table1
WHERE ...
ORDER BY ...
要选择结果集的前半部分,请使用PERCENT:
SELECT TOP 50 PERCENT *
FROM table1
WHERE ...
ORDER BY ...
如果您希望结果一致,请记得添加ORDER BY。
答案 1 :(得分:2)
首先:
SELECT TOP 50 PERCENT a, b, c FROM table
第二
SELECT TOP 50 a, b, c FROM table
作为一项规则,除非您同时提供ORDER BY,否则不建议执行此操作(并且在那些完全可以正常工作以省略ORDER BY的情况下,您的代码将更易于理解且更易于修改如果你把它放在基础表的细节中。
分页(例如,返回y行的x块)在SQLServer中比许多其他SQL语言关系数据库更麻烦(说实话,比所有这些更麻烦),但可以使用ROW_NUMBER完成:
WITH OrderedTable AS
(
SELECT a, b, c, ROW_NUMBER() OVER (ORDER BY d) as rowNumber
FROM table
)
SELECT a, b, c FROM OrderedTable
WHERE rowNumber between 31 and 40
将选择按行d排序的第十组十行。
当限制来自变量时,也需要后一种方法,因为TOP不允许使用TOP @number。
答案 2 :(得分:1)
SQL Server语法
SELECT TOP number|percent column_name(s)
FROM table_name
example :
SELECT TOP 50 PERCENT * FROM tablename
MySQL语法
SELECT column_name(s)
FROM table_name
LIMIT number
Oracle语法
SELECT column_name(s)
FROM table_name
WHERE ROWNUM <= number
答案 3 :(得分:1)
以下是在MS SQL 2005和2008中的工作
select top 50 PERCENT * from x