您的位置:首页 > 数据库

SQL:要求查询出用户信息,根据用户发表的信息个数对用户进行排序

2013-01-17 23:43 316 查看
要求:

查询出用户信息,根据用户发表的信息个数对用户进行排序

/*用户表*/
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


最后的结果:

userIduserName
2李四
1张三
3王五
如果有更好的方法请不吝赐教!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐