关于一个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

浙公网安备 33010602011771号