有人能帮我理解为什么我要返回0行吗?以下是我的查询:
SELECT s.firstname, s.lastname, s.studentprogram
FROM student s
WHERE s.studentprogram =
(SELECT p.ProfessorProgram
FROM professor p
WHERE p.ProfessorProgram LIKE 'C_');问题是:创建一个查询/子查询来显示学生的名字、姓氏和程序。程序必须与教授表中的程序相同,而教授的程序必须以‘C’开头。此查询将使用子查询而不是联接。
表:学生
栏目:学生姓名,学生计划,电话,年龄,名字,姓氏
表:教授
专栏: ProfessorId,ProfessorProgram,PhoneNo,Age,ProfessorName
发布于 2021-05-06 00:22:20
这句话:
WHERE p.ProfessorProgram LIKE 'C_'检查ProfessorProgram是否以'C'开头,并且它有两个字符。
这个问题可能是为了:
WHERE p.ProfessorProgram LIKE 'C%'我不知道这是不是问题真正想要的。因为你可以检查学生的课程。而“程序代码”似乎是连接两个表的一种奇怪的方式。但是,如果这是唯一的两个表,那么这是唯一的选择。
发布于 2021-05-06 12:18:32
我认为您正在寻找这样的查询:
SELECT s.firstname, s.lastname, s.studentprogram
FROM student s
WHERE s.studentprogram IN
(SELECT p.ProfessorProgram
FROM professor p
WHERE p.ProfessorProgram LIKE 'C%');正如我看到您对Gordan的第一个答复的评论,如果=导致错误,那么使用IN不应该返回0行。如果这种情况仍在发生,您介意共享表中的数据吗?只有当以ProfessorProgram开头的C没有与其有关联的学生时,才可能发生这种情况。
希望我们能阐明我们的观点,并使你的问题正确。
https://stackoverflow.com/questions/67410332
复制相似问题