SqlYog子查询
猫在裙角. 2020-03-28 11:55:33 in
not in
exists
检测对象是否存在 IF EXISTS
EXISTS子查询的语法 : select * from 表名 where exists(子查询语句)
子查询语句有返回结果: EXISTS子查询结果为TRUE
子查询语句无返回结果: EXISTS子查询结果为FALSE, 外层查询不执行
制作成绩单:
SELECT `studentName` 姓名,
( SELECT `gradeName` FROM `grade` WHERE `gradeId`=`subject`.`gradeId` ) AS 课程所属年级 , #子查询嵌套父查询得到年级名
`subjectName` 课程名称, `examDate` 考试日期, `studentResult` 成绩
FROM `result` r1
INNER JOIN `student` ON r1.`studentNo`=`student`.`studentNo`
INNER JOIN `subject` ON `subject`.`subjectNo`=r1.`subjectNo`
WHERE r1.`examDate` IN (
SELECT MAX(`examDate`) FROM `result` r2
WHERE r1.`subjectNo` = r2.`subjectNo` #主查询和子查询间参数值绑定
GROUP BY r2.`subjectNo`
)
ORDER BY subject.gradeId;
使用临时表保存查询结果 CREATE TEMPORARY TABLE 表名(查询语句);
子查询注意事项:
子查询语句可以嵌套在SQL语句中任何表达式出现的位置
只出现在子查询中而没有出现在父查询中的表不能包含在输出列中