关于一个mysql查询问题的记录

CREATE TABLE `user` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
INSERT INTO `user` (`id`, `name`)
VALUES (1,'user_1'), (2,'user_2'), (3,'user_3'), (4,'user_4');

CREATE TABLE `goods` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL,
  `user_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
INSERT INTO `goods` (`id`, `name`, `user_id`)
VALUES (1,'g_1',1), (2,'g_2',1), (3,'g_3',1), (4,'g_4',2), (5,'g_5',2), (6,'g_6',4);

执行

select 
*
from (
    select 
        user.id as u_id,
        user.name as u_name,
        goods.user_id,
        count(goods.id) as goods_num
    from user right join goods on user.id = goods.user_id
    group by user.id 

) as md
order by goods_num desc

这是两个版本,有点小差别

select 
*
from (
    select 
        user.id as u_id,
        user.name as u_name,
        goods.user_id,
        count(goods.id) as goods_num
    from user right join goods on user.id = goods.user_id
    group by user.id with rollup

) as md
order by goods_num desc
posted @ 2020-03-18 17:06  just_c  阅读(107)  评论(0)    收藏  举报