我有一个名为posts
的表,它有三列,分别是id
、details
和date
,其中按升序包含以下数据:
+----+----------+-------+
| id | details | date |
+----+----------+-------+
| 1 | details1 | date1 |
| 2 | details2 | date2 |
| 3 | details3 | date3 |
| 4 | details4 | date4 |
+----+----------+-------+
我想按降序选择数据,但我想保留第一行的详细信息,比如我想保留第4行的id详细信息、详细信息4、日期4,但然后我想在中选择从id 3到2的数据,比如order by id desc limit 2
,但保留最后的第一行
您可以使用ORDER BY DESC LIMIT 1,n 的查询
这样,n是您想要获取的行数,并且您使用LIMIT 1跳过结果的第一行,。
WITH a AS (
SELECT 1 i
UNION ALL
SELECT 2 i
UNION ALL
SELECT 3 i
UNION ALL
SELECT 4 i
)
, b as (
SELECT TOP 1 i FROM a ORDER BY i DESC
)
SELECT *
FROM A
EXCEPT
SELECT * FROM B
ORDER BY i DESC