我有两张桌子:
wallpapers

id     img        cat_id

downloads
 id     wall_id
 1       10
 2       10
 3       2
 .       .

我想从特定的cat_id下载最多的壁纸。
我的问题:
SELECT *
FROM wallpapers
    WHERE cat_id = 10
    AND id IN
    (SELECT wall_id
        FROM (SELECT wall_id, count(*)
                FROM downloads
                GROUP BY wall_id
                ORDER BY count(*) DESC))

但它什么也没回!
我的框架是:
    $rows = $this->db->query($sql);

    var_dump($rows);
    return;

输出:
bool(false)

最佳答案

只需按wall_id分组,这样就可以获得每个wall_id的总下载量,然后
按他们点

ORDER BY count(downloads.wall_id) DESC

并添加限制
LIMIT 3

假设你想获得前三名的下载量
所以你最后的问题是这样的
SELECT   *
FROM     wallpapers
JOIN     downloads
ON       wallpapers.id = downloads.wall_id
GROUP BY downloads.wall_id ORDER BY count(downloads.wall_id) DESC limit 3

关于php - 如何获得最多下载记录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40213893/

10-10 06:55