1

我们可以在 Sql server 中使用以下代码从索引 i 到 j 选择行。如何在 mysql 中执行此操作?

select * from 
  (SELECT  ROW_NUMBER() OVER (ORDER BY FieldName asc) as row,
  * from TableName) 
WHERE row between STARTINDEX AND ENDINDEX
4

1 回答 1

1

我不确定我理解的问题是否完全正确,因为我对 SQL 不是很熟悉:您想按 FieldName 对结果进行排序,并根据您创建的行号选择部分结果。我会在 MySQL 中这样写:

SELECT *
FROM TableName
ORDER BY FieldName ASC
LIMIT STARTINDEX-1, ENDINDEX-STARTINDEX

在 MySQL 中,LIMIT 索引从零开始(在您的 SQL 代码中从 1 开始),LIMIT 子句中的其他数字是您愿意获得的记录数

编辑:我的结果是缺少行号。如果您想要结果中的行号,它将如下所示:

SET @num = STARTINDEX-1;
SELECT @NUM := (@NUM + 1) AS row, TableName.*
FROM TableName
ORDER BY FieldName ASC
LIMIT STARTINDEX-1, ENDINDEX-STARTINDEX

STARTINDEX 与第一行的编号相同,因为 SELECT 即使在第一次也会将一个添加到 @NUM

于 2012-12-02T06:06:09.247 回答