问题描述
执行一段sql的时候报错了,不论逻辑(大意是查是在s3所学的课当中,s1没学的课),为什么这段sql执行的时候会报Table 'learnbybook.c1' doesn't exist ?
问题出现的环境背景及自己尝试过哪些方法
想问一下这四个查询的执行顺序,以及要怎么改啊
我记得有相关子查询的时候,不是会先执行主查询的吗,那样二号查询应该会在四号之前先执行,c1应该有了啊,怎么会不存在
相关代码
// 请把代码文本粘贴到下方(请勿用图片代替代码)
select * --把它称为一号查询
from (select sc1.`c#` cc from sc sc1 where sc1.`s#`='s3' ) c1 --把它称为二号查询
where c1.cc not in ( --把它称为三号查询
select sc2.`c#`
from sc sc2
where sc2.`s#` ='s1' and sc2.`c#` in (
select c1.cc --把它称为四号查询
from c1
)
);
CREATE TABLE `c` (
`c#` char(4) NOT NULL,
`cname` char(10) NOT NULL,
`t#` char(4) DEFAULT NULL,
PRIMARY KEY (`c#`),
KEY `t#` (`t#`),
CONSTRAINT `fk_c_t#` FOREIGN KEY (`t#`) REFERENCES `t` (`t#`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8
CREATE TABLE `sc` (
`s#` char(4) NOT NULL,
`c#` char(4) NOT NULL,
`score` smallint(6) DEFAULT NULL,
PRIMARY KEY (`s#`,`c#`),
KEY `c#` (`c#`),
CONSTRAINT `fk_sc_c#` FOREIGN KEY (`c#`) REFERENCES `c` (`c#`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `fk_sc_s#` FOREIGN KEY (`s#`) REFERENCES `s` (`s#`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8
你期待的结果是什么?实际看到的错误信息又是什么?