我有一个包含字段的表:
id
,albumid
,userid
,keywords
,其中关键字为varchar
,并且可以通过分隔符设置多个,例如:一,二,三< / p>
我想获得最热门关键字的前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);
以下代码是否正确。我不确定我是否获得了大多数重复条目的关键字......
答案 0 :(得分: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;
但是,如果您的关键字列以逗号分隔,则此查询将不起作用。此查询基于每个记录都有一个关键字条目
的事实