MySQL:如何将结果限制为最后 5 行


MySQL: How to limit the results to the last 5 rows

这个显示最后 10 个新结果,一切正常

$query = "SELECT s.name AS song,
                 SUM(v.hit_shit) AS hit,
                 COUNT(v.hit_shit) - SUM(v.hit_shit) AS shit,
                 MAX(date_voted) AS last_vote
            FROM songs AS s
           INNER JOIN votes AS v ON v.song_id = s.id
           WHERE v.date_voted >= CURDATE()
           GROUP BY s.id
           ORDER BY last_vote DESC
           LIMIT 10";
$song = mysql_query($query);

但是这个节目全部,但我只需要5:(

$query = "SELECT s.name AS song,
                 SUM(v.hit_shit) AS hit,
                 COUNT(v.hit_shit) - SUM(v.hit_shit) AS shit
            FROM songs AS s
           INNER JOIN votes AS v ON v.song_id = s.id
           WHERE v.date_voted >= CURDATE()
             AND v.date_voted < CURDATE() + INTERVAL 1 DAY
           GROUP BY s.id
           ORDER BY hit DESC, shit ASC, song ASC";
$song = mysql_query($query);

附言对不起 4 我的坏英语

将限制 5 添加到查询末尾。

$query = "SELECT s.name AS song,
                 SUM(v.hit_shit) AS hit,
                 COUNT(v.hit_shit) - SUM(v.hit_shit) AS shit,
                 MAX(date_voted) AS last_vote
            FROM songs AS s
           INNER JOIN votes AS v ON v.song_id = s.id
           WHERE v.date_voted >= CURDATE()
           GROUP BY s.id
           ORDER BY last_vote DESC
           LIMIT 5";
$song = mysql_query($query);

您应该在查询末尾添加参数"LIMIT"。

$query = "SELECT s.name AS song,
                 SUM(v.hit_shit) AS hit,
                 COUNT(v.hit_shit) - SUM(v.hit_shit) AS shit
            FROM songs AS s
           INNER JOIN votes AS v ON v.song_id = s.id
           WHERE v.date_voted >= CURDATE()
             AND v.date_voted < CURDATE() + INTERVAL 1 DAY
           GROUP BY s.id
           ORDER BY hit DESC, shit ASC, song ASC
           LIMIT 5";
$song = mysql_query($query);

编辑:修改了代码格式。