2016-04-25 38 views
0
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命令。這很好用,但在照片列表中,每張照片都鏈接到一個目錄ID。選擇一行

我現在想要的只是每個目錄ID中的一行。

我該怎麼做?

+0

如果您使用正在使用的表格的架構更新了此問題,將會有所幫助。 – jwatts1980

回答

1

您需要刪除其他列。您需要將聚合函數應用於除下面的目錄id之外的所有列。如果你需要其他列應用聚合函數到所有列,如在計數。我用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 
+0

但我試圖讓照片獲得最多的觀點。 – kiwis