Php Mysql,按字段计数排序

Php Mysql,按字段计数排序,php,mysql,sorting,Php,Mysql,Sorting,我有一张名为purchased_albums的桌子 id album_id member_id date 4 8 7 2013-12-24 08:17:54 5 9 7 2013-12-29 11:03:35 6 8 10 2013-12-24 08:17:54 我正试图通过购买的专辑来分类。也就是说,它应该计算重复次数最多的唱片集id,并根据该id进行

我有一张名为purchased_albums的桌子

id  album_id    member_id   date
4      8              7     2013-12-24 08:17:54
5      9              7     2013-12-29 11:03:35
6      8              10    2013-12-24 08:17:54
我正试图通过购买的专辑来分类。也就是说,它应该计算重复次数最多的唱片集id,并根据该id进行排序。我的查询一直返回null

$q="SELECT COUNT(album_id) as tot,album_id,date  FROM purchased_albums ORDER BY tot DESC";

您可以使用联接获取每个相册的计数,然后按结果数量排序:

SELECT pa.*
FROM purchased_albums pa
INNER JOIN
(
    SELECT COUNT(*) qty_purchased, album_id
    FROM purchased_albums
    GROUP BY album_id
) c ON pa.album_id = c.album_id
ORDER BY c.qty_purchased DESC

请仔细阅读此代码,您可能会发现您的确切要求

  $q="SELECT COUNT(album_id) as tot,album_id,date FROM purchased_albums GROUP BY album_id ORDER BY album_id DESC";

像这样的东西能帮你吗

SELECT `album_id`, `date`, COUNT(*) `purchases`
FROM `purchased_albums`
GROUP BY `album_id`
ORDER BY `purchases` DESC
要挑选购买次数超过3次的相册,请使用

SELECT `album_id`, `date`, COUNT(*) `purchases`
FROM `purchased_albums`
GROUP BY `album_id`
HAVING `purchases` > 3
ORDER BY `purchases` DESC
SELECT `album_id`, `date`, COUNT(*) `purchases`
FROM `purchased_albums`
GROUP BY `album_id`
HAVING `purchases` > 3
ORDER BY `purchases` DESC