0

我有一个包含字段的表:

id, albumid, userid,keywords其中关键字是varchar并且可以通过分隔符超过一个,例如:一、二、三

我想获得最受欢迎关键字的前 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); 

下面的代码是否正确。我不确定我是否获得了具有最多重复条目的关键字...

4

1 回答 1

0

试试这个查询的大小,我只是捏造你的分组,并使用 DISTINCT 用户 ID 作为计数指标

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

但是,如果您的关键字列以逗号分隔,则此查询将不起作用。此查询基于每条记录都有一个关键字条目这一事实进行操作

于 2012-09-28T05:15:47.663 回答