用SQL来截取后几条数据,不用limit函数
时间: 2024-03-28 14:38:36 浏览: 72
如果不使用limit函数,可以使用子查询的方式来截取后几条数据。具体做法是先查询总行数,然后再根据需要截取的行数计算出偏移量,最后使用偏移量查询需要的数据。以下是一个示例SQL语句:
```
SELECT DATA_TIME, DATA_VALUE
FROM (
SELECT DATA_TIME, DATA_VALUE, ROW_NUMBER() OVER (ORDER BY DATA_TIME DESC) AS ROW_NUM
FROM YXDDZH_MIDDLE.GZ_SCREEN_SY_REGULATORY_LAW
WHERE IS_DELETED = 0 AND DATA_NAME = '日期'
) sub
WHERE ROW_NUM BETWEEN ((SELECT COUNT(*) FROM YXDDZH_MIDDLE.GZ_SCREEN_SY_REGULATORY_LAW WHERE IS_DELETED = 0 AND DATA_NAME = '日期') - 12 + 1) AND (SELECT COUNT(*) FROM YXDDZH_MIDDLE.GZ_SCREEN_SY_REGULATORY_LAW WHERE IS_DELETED = 0 AND DATA_NAME = '日期')
ORDER BY DATA_TIME ASC;
```
这个SQL语句使用了子查询和ROW_NUMBER()函数来生成每行的行号,然后根据需要截取的行数计算出偏移量,最后使用偏移量查询需要的数据。需要注意的是,这种方式的性能可能不如使用limit函数,因此在实际使用中需要根据具体情况进行选择。
阅读全文