SQL:要求查询出用户信息,依据用户发表的信息个数对用户进行排序
SQL:要求查询出用户信息,根据用户发表的信息个数对用户进行排序
要求:
查询出用户信息,根据用户发表的信息个数对用户进行排序
/*用户表*/ CREATE TABLE `tb_user` ( `userId` int(11) NOT NULL auto_increment COMMENT 'testtest', `userName` varchar(64) default NULL, `userNo` varchar(64) default NULL, PRIMARY KEY (`userId`) ); /*插入测试数据*/ insert into `tb_user`(`userId`,`userName`,`userNo`) values (1,'张三','NO001'),(2,'李四','NO002'),(3,'王五','NO003'); /*信息表*/ CREATE TABLE `tb_article` ( `article_id` int(11) NOT NULL auto_increment, `title` varchar(256) NOT NULL, `content` varchar(1024) default NULL, `userId` int(11) NOT NULL, PRIMARY KEY (`article_id`) ); /*插入测试数据*/ insert into `tb_article`(`article_id`,`title`,`content`,`userId`) values (1,'a','a',1),(2,'b','b',1),(3,'c','c',2),(4,'d','d',3),(5,'e','e',2),(6,'f','f',2);
- 根据信息表中信息个数对userId进行分组排序
SELECT userId FROM tb_article WHERE 1=1 GROUP BY userId ORDER BY COUNT(userId) DESC
- 使用子查询和刚才的排序的结果,查询出用户信息
SELECT t1.userId,(SELECT userName FROM tb_user t2 WHERE t2.userId=t1.userId) AS userName FROM tb_article AS t1 WHERE 1=1 GROUP BY t1.userId ORDER BY COUNT(t1.userId) DESC
最后的结果:userId userName 2 李四 1 张三 3 王五
如果有更好的方法请不吝赐教!