SELECT
v.ID,
v.PhotoID,
COUNT(*) AS Cnt,
p.PhotoWidth,
p.Dir
FROM `views` v
JOIN `photos` p
ON v.PhotoID = p.ID
GROUP BY v.PhotoID DESC
ORDER BY Cnt DESC
我有上面的MySQL命令。这很好用,但在Photo表中,每张照片都链接到一个目录ID。
我现在想要的只是每个Dir id的一行。
我该怎么做?
答案 0 :(得分:1)
您需要删除其他列。您需要将聚合函数应用于除了目录ID之外的所有列,如下所示。如果您需要其他列将聚合函数应用于所有列,例如count。我使用1而不是*来提高查询性能。
SELECT COUNT(1) AS Cnt, p.Dir from `photos` p GROUP BY p.Dir DESC ORDER BY Cnt DESC
更新
因此,如果您希望获得带有大多数观看次数的photoID,那么以下查询将会很有帮助。
SELECT p.ID, v.CountRec AS Cnt FROM `photos` p join (select PhotoID, count(1) CountRec from `views` group by PhotoID) v ON p.ID= v.PhotoID ORDER BY Cnt DESC