2012-09-28 58 views
0

我有一個字段的表MySQL的結果:獲得由最高計數

idalbumiduseridkeywords這裏的關鍵詞是varchar,可以是多個由delimteter例如:一,二,三

我想最流行的關鍵詞的排名前10位的結果,但不是由同一用戶 我目前使用的這一點,但不知道它的正確:

$tableName = $db->nameQuote('#__mytable'); 

$sql = "SELECT `id`,`albumid`,`userid`,`keywords`, COUNT(keywords) AS popular FROM ".$tableName." GROUP BY `userid` HAVING COUNT(*) > 1 ORDER BY popular DESC LIMIT ".$lim0.",".$lim; 

$db->setQuery($sql); 

以下代碼是否正確。林不知道,如果即時得到大多數重複條目關鍵字...

+2

關鍵字是否真的是逗號分隔的字符串? COUNT()不計算字符串中條目的數量,它用於計算GROUP BY子句中具有相同鍵列的行數。 MySQL沒有內置函數來計算逗號分隔字符串中的項目數。您應該將其移到另一個表格中,以便每個關鍵字都有一行,然後您可以對它們進行計數。 – Barmar

+0

是的。目前的SQL確實給了我結果,我只是不知道它們是否準確地通過關鍵字給我。 – ivias

+0

我想知道這個查詢在做什麼。 – ivias

回答

0

試穿尺寸,我就在你的集團捏造此查詢,並使用DISTINCT的userid計數指標

"SELECT `id`,`albumid`,`keywords`, COUNT(DISTINCT userid) AS popularity FROM ".$tableName." GROUP BY `keywords` HAVING popularity >= 1 ORDER BY popularity DESC LIMIT ".$lim0.",".$lim; 

然而,如果您的關鍵字列使用逗號分隔,則此查詢將無法使用。這個查詢是基於以下事實進行的:每條記錄都有一個關鍵字條目