我们可以在Sql server.how中使用以下代码从索引i到j选择行来在mysql中执行吗?
select * from
(SELECT ROW_NUMBER() OVER (ORDER BY FieldName asc) as row,
* from TableName)
WHERE row between STARTINDEX AND ENDINDEX
答案 0 :(得分: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添加一个