所解决的问题
/*
Navicat MySQL Data Transfer
Source Server : MYSQL
Source Server Version : 50519
Source Host : localhost:3306
Source Database : jy33
Target Server Type : MYSQL
Target Server Version : 50519
File Encoding : 65001
Date: 2023-06-16 09:48:33
*/
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for `courseinfos`
-- ----------------------------
DROP TABLE IF EXISTS `courseinfos`;
CREATE TABLE `courseinfos` (
`C_id` char(3) NOT NULL,
`C_name` char(20) NOT NULL,
`C_credit` tinyint(4) NOT NULL DEFAULT '0',
PRIMARY KEY (`C_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of courseinfos
-- ----------------------------
INSERT INTO `courseinfos` VALUES ('101', '计算机基础', '3');
INSERT INTO `courseinfos` VALUES ('102', 'C语言', '5');
INSERT INTO `courseinfos` VALUES ('103', '数据库', '4');
INSERT INTO `courseinfos` VALUES ('201', '离散数学', '4');
INSERT INTO `courseinfos` VALUES ('202', '计算机网络', '4');
INSERT INTO `courseinfos` VALUES ('301', '软件工程', '4');
-- ----------------------------
-- Table structure for `studentcourseinfos`
-- ----------------------------
DROP TABLE IF EXISTS `studentcourseinfos`;
CREATE TABLE `studentcourseinfos` (`S_id` char(7) NOT NULL,
`C_id` char(3) NOT NULL,
`Sc_grade` tinyint(4) NOT NULL DEFAULT '0',
KEY `s` (`S_id`),
KEY `c` (`C_id`),
CONSTRAINT `s` FOREIGN KEY (`S_id`) REFERENCES `studentinfos` (`S_id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `c` FOREIGN KEY (`C_id`) REFERENCES `courseinfos` (`C_id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of studentcourseinfos
-- ----------------------------
INSERT INTO `studentcourseinfos` VALUES ('4102101', '101', '80');
INSERT INTO `studentcourseinfos` VALUES ('4102101', '102', '89');
INSERT INTO `studentcourseinfos` VALUES ('4102101', '103', '78');
INSERT INTO `studentcourseinfos` VALUES ('4102102', '101', '57');
INSERT INTO `studentcourseinfos` VALUES ('4102102', '102', '67');
INSERT INTO `studentcourseinfos` VALUES ('4202103', '103', '90');
INSERT INTO `studentcourseinfos` VALUES ('4202110', '101', '85');
INSERT INTO `studentcourseinfos` VALUES ('4202110', '102', '91');
INSERT INTO `studentcourseinfos` VALUES ('4202221', '101', '69');
INSERT INTO `studentcourseinfos` VALUES ('4402130', '101', '78');
INSERT INTO `studentcourseinfos` VALUES ('4402130', '103', '74');
-- ----------------------------
-- Table structure for `studentinfos`
-- ----------------------------
DROP TABLE IF EXISTS `studentinfos`;
CREATE TABLE `studentinfos` (
`S_id` char(7) NOT NULL DEFAULT '',
`S_name` char(8) NOT NULL,
`S_sex` bit(1) NOT NULL DEFAULT b'1',
`S_major` varchar(20) NOT NULL,
`S_birth` datetime NOT NULL,PRIMARY KEY (`S_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of studentinfos
-- ----------------------------
INSERT INTO `studentinfos` VALUES ('4102101', '王林', '', '计算机', '1983-01-23 00:00:00');
INSERT INTO `studentinfos` VALUES ('4102102', '吴荣华', '', '计算机', '1984-03-28 00:00:00');
INSERT INTO `studentinfos` VALUES ('4202103', '张强', '', '电子', '1981-11-19 00:00:00');
INSERT INTO `studentinfos` VALUES ('4202110', '王向荣', '', '电子', '1980-12-09 00:00:00');
INSERT INTO `studentinfos` VALUES ('4202221', '李丽', '', '电子', '1982-07-30 00:00:00');
INSERT INTO `studentinfos` VALUES ('4302101', '刘明', '', '自控', '1982-10-18 00:00:00');
INSERT INTO `studentinfos` VALUES ('4402130', '叶凡', '', '数学', '1983-11-1800:00:00');
-- ----------------------------
-- View structure for `v_score1`
-- ----------------------------
DROP VIEW IF EXISTS `v_score1`;
CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v_score1` AS select `studentinfos`.`S_id` AS `S_id`,`studentinfos`.`S_name` AS `S_name`,`studentinfos`.`S_sex` AS `S_sex`,`studentinfos`.`S_major` AS `S_major`,`studentinfos`.`S_birth` AS `S_birth` from `studentinfos` where (`studentinfos`.`S_major` = '计算机') ;
-- ----------------------------
-- View structure for `v_score2`
-- ----------------------------
DROP VIEW IF EXISTS `v_score2`;
CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v_score2` AS select `studentinfos`.`S_major` AS `'专业'`,avg(`studentcourseinfos`.`Sc_grade`) AS `'平均成绩'` from (`studentinfos` join `studentcourseinfos`) (`studentinfos`.`S_id` = `studentcourseinfos`.`S_id`) group by `studentinfos`.`S_major` ;
mysql> select S_id,S_name,S_major,S_sex,S_birth
-> from StudentInfos
-> where S_id in(
-> select S_id
-> from StudentCourseInfos
-> group by S_id
-> having C_id !=(
-> select C_id
-> from CourseInfos
-> where C_name='C语言'));
1054 - Unknown column 'C_id' in 'having clause'
mysql>
直接在查询结果后where 筛选不就好了么,使用having也是要聚合函数 ,比如这种
SELECT S_id FROM sc GROUP BY S_id HAVING max( C_id)!=1 而不是直接 SELECT S_id FROM sc GROUP BY S_id HAVING C_id !=1
alter table students add foreign key(c_id) references classes(id);