我有这样的db表结构:
--
-- Table structure for table `table_submissions`
--
CREATE TABLE IF NOT EXISTS `table_submissions` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Submission ID',
`item_name` bigint(20) unsigned NOT NULL COMMENT 'Item Name',
`status` tinyint(1) NOT NULL DEFAULT '0' COMMENT '0 = pending, 1 = approved, -1 = denied',
PRIMARY KEY (`id`),
KEY `item_name` (`item_name`),
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
PHP
$date_info = $db->fetchOne("SELECT * FROM table_submissions");
我需要按计数item_name limit 10
这意味着访问者被要求的item_name
最多,它将位于顶部然后++ 9
我怎么能这样做?
答案 0 :(得分:3)
我相信你想要这个:
SELECT
item_name,
count(1)
FROM
table_submissions
GROUP BY
item_name
ORDER BY
count(1) DESC
LIMIT 10;
请注意,这并未考虑一个用户请求相同项目1000次,而1000个用户每次请求一个项目。如果这对您很重要,那么您需要一种按用户ID过滤的方法。