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

Mysql 使用LIMIT和ORDER BY col ASC获取最后X行,mysql,sql-order-by,limit,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 f

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

$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
?或者有没有方法反转结果顺序?

只需将查询设为子查询:

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