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