使用LIMIT和ORDER BY col ASC获取最后X行

时间:2012-09-17 18:33:36

标签: mysql sql-order-by limit

此查询用于检索某些消息,它会返回所有消息:

$q = "
    SELECT *
    FROM pms
    WHERE
        (
            (id_to = $id and id_from = ".sesion().") 
            OR 
            (id_from = $id and id_to = ".sesion().")
        )
        AND (id > $from)
    ORDER by fecha ASC";

问题是我想获得最后50个元素,但我认为它可以使用DESC排序...

我该怎么做?

我是否需要首先计算行数,以便我可以使用LIMIT $many-$ipp,$many?或者有没有办法反转结果顺序?

1 个答案:

答案 0 :(得分:2)

只需将查询作为子查询:

SELECT * FROM
(
    SELECT *
    FROM pms
    WHERE
        (
            (id_to = $id AND id_from = ".sesion().")
            OR (id_from = $id and id_to = ".sesion().")
        )
        AND id > $from
    ORDER BY fecha DESC
    LIMIT 50
) q1
ORDER BY fecha ASC