mysql 语句梳理

1 分组:(场景:求哪些同学全科及格,【答案:查出来的 姓名为 q,x为全科及格】)

场景构建

CREATE TABLE `course` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `name` varchar(64) DEFAULT NULL COMMENT '名称',
  `accounts` varchar(64) DEFAULT NULL COMMENT '课程',
  `scores` int(64) DEFAULT 0 COMMENT '分数',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=45 DEFAULT CHARSET=utf8 COMMENT='课程表';

初始化值

INSERT INTO `course` (`id`, `name`, `accounts`, `scores`) VALUES (1, 'w', '语文', 57);
INSERT INTO `course` (`id`, `name`, `accounts`, `scores`) VALUES (2, 'w', '数学', 99);
INSERT INTO `course` (`id`, `name`, `accounts`, `scores`) VALUES (3, 'w', '英语', 120);
INSERT INTO `course` (`id`, `name`, `accounts`, `scores`) VALUES (4, 'q', '语文', 61);
INSERT INTO `course` (`id`, `name`, `accounts`, `scores`) VALUES (5, 'q', '数学', 62);
INSERT INTO `course` (`id`, `name`, `accounts`, `scores`) VALUES (6, 'q', '英语', 66);
INSERT INTO `course` (`id`, `name`, `accounts`, `scores`) VALUES (7, 'x', '语文', 66);
INSERT INTO `course` (`id`, `name`, `accounts`, `scores`) VALUES (8, 'x', '数学', 66);
INSERT INTO `course` (`id`, `name`, `accounts`, `scores`) VALUES (9, 'x', '英语', 66);
INSERT INTO `course` (`id`, `name`, `accounts`, `scores`) VALUES (10, 'y', '语文', 90);
INSERT INTO `course` (`id`, `name`, `accounts`, `scores`) VALUES (11, 'y', '数学', 80);
INSERT INTO `course` (`id`, `name`, `accounts`, `scores`) VALUES (12, 'y', '英语', 55);

图示:

这里写图片描述
答案:意思翻译过来就是查询哪些同学,他的课程里有两科以上超过60分的,把这些同学全部查询出来。

select * from course a where a.name in( select name from course l where  scores >60 GROUP BY name HAVING(count(accounts)) >2);

猜你喜欢

转载自blog.csdn.net/haidaoxianzi/article/details/81200223