我有一个具有以下结构的表(有些人可能认为它是标准vBulletin安装的一部分):
mysql> SHOW CREATE TABLE adminlog\G
*************************** 1. row ***************************
Table: adminlog
Create Table: CREATE TABLE `adminlog` (
`adminlogid` int(10) unsigned NOT NULL AUTO_INCREMENT,
`userid` int(10) unsigned NOT NULL DEFAULT '0',
`dateline` int(10) unsigned NOT NULL DEFAULT '0',
`script` varchar(50) NOT NULL DEFAULT '',
`action` varchar(20) NOT NULL DEFAULT '',
`extrainfo` varchar(200) NOT NULL DEFAULT '',
`ipaddress` varchar(15) NOT NULL DEFAULT '',
PRIMARY KEY (`adminlogid`),
KEY `script_action` (`script`,`action`)
) ENGINE=MyISAM AUTO_INCREMENT=698189 DEFAULT CHARSET=latin1
1 row in set (0.02 sec)
mysql>
PHP中的以下查询将选择某个用户使用的不同脚本:
"SELECT DISTINCT script FROM adminlog WHERE userid = " . intval($userid)
如何根据出现次数(针对特定用户标识)获取查询以按顺序排序? ORDER BY COUNT(*)
不这样做。
答案 0 :(得分:4)
我认为你可以通过小组和计数来解决这个问题。
SELECT count(script)ocurrences,script 来自adminlog GROUP BY脚本ORDER BY ocurrences DESC;
这里有一个测试链接
答案 1 :(得分:1)
ORDER BY COUNT(*)应该有效,但摆脱了DISTINCT。
尝试:
"SELECT script FROM adminlog WHERE userid = " . intval($userid)
. "GROUP BY script ORDER BY COUNT(*)"