Order by DESC 反向结果
Order by DESC reverse result
我正在 SQL 中检索一些数据,按 DESC 排序。然后我想扭转结果。我是通过将数据推入一个数组然后使用 array_reverse 来做到这一点的,但我发现它在 CPU 时间上很费力,我想简单地使用正确的 SQL 查询。
我看过这个帖子 SQL Server reverse order after using desc,但我似乎无法让它与我的查询一起使用。
SELECT live.message,
live.sender,
live.sdate,
users.online
FROM live, users
WHERE users.username = live.sender
ORDER BY live.id DESC
LIMIT 15
您可以将查询放入子查询中,然后反转顺序:
SELECT t.message,
t.sender,
t.sdate,
t.online
FROM
(
SELECT live.id,
live.message,
live.sender,
live.sdate,
users.online
FROM live
INNER JOIN users
ON users.username = live.sender
ORDER BY live.id DESC
LIMIT 15
) t
ORDER BY t.id ASC
您会注意到我用 显式 INNER JOIN
替换了隐式 JOIN
。通常认为不希望在 FROM
子句(q.v。ANSI-92 标准)中使用逗号,因为它会使查询更难阅读。
您可以用另一个查询包装您的查询,然后使用 asc
进行排序。由于您想按 live.id
排序,因此必须将其包含在内部查询中,以便外部查询可以按它排序:
SELECT message, sender, sdate, online
FROM (SELECT live.message, live.sender, live.sdate, users.online, live.id
FROM live, users
WHERE users.username = live.sender
ORDER BY live.id DESC
LIMIT 15) t
ORDER BY id ASC
我正在 SQL 中检索一些数据,按 DESC 排序。然后我想扭转结果。我是通过将数据推入一个数组然后使用 array_reverse 来做到这一点的,但我发现它在 CPU 时间上很费力,我想简单地使用正确的 SQL 查询。
我看过这个帖子 SQL Server reverse order after using desc,但我似乎无法让它与我的查询一起使用。
SELECT live.message,
live.sender,
live.sdate,
users.online
FROM live, users
WHERE users.username = live.sender
ORDER BY live.id DESC
LIMIT 15
您可以将查询放入子查询中,然后反转顺序:
SELECT t.message,
t.sender,
t.sdate,
t.online
FROM
(
SELECT live.id,
live.message,
live.sender,
live.sdate,
users.online
FROM live
INNER JOIN users
ON users.username = live.sender
ORDER BY live.id DESC
LIMIT 15
) t
ORDER BY t.id ASC
您会注意到我用 显式 INNER JOIN
替换了隐式 JOIN
。通常认为不希望在 FROM
子句(q.v。ANSI-92 标准)中使用逗号,因为它会使查询更难阅读。
您可以用另一个查询包装您的查询,然后使用 asc
进行排序。由于您想按 live.id
排序,因此必须将其包含在内部查询中,以便外部查询可以按它排序:
SELECT message, sender, sdate, online
FROM (SELECT live.message, live.sender, live.sdate, users.online, live.id
FROM live, users
WHERE users.username = live.sender
ORDER BY live.id DESC
LIMIT 15) t
ORDER BY id ASC