返回 0 行,为啥?
Posted
技术标签:
【中文标题】返回 0 行,为啥?【英文标题】:0 rows returned, why?返回 0 行,为什么? 【发布时间】:2021-05-06 00:18:22 【问题描述】:谁能帮我理解为什么我返回 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”开头。此查询将使用子查询而不是联接。
表:学生
列:studentno、studentprogram、phoneno、age、firstname、lastname
表:教授
列:ProfessorId、ProfessorProgram、PhoneNo、Age、ProfessorName
【问题讨论】:
【参考方案1】:表达式:
WHERE p.ProfessorProgram LIKE 'C_'
正在检查ProfessorProgram
是否以'C'
开头,并且它正好有两个字符。
这个问题的意思大概是:
WHERE p.ProfessorProgram LIKE 'C%'
我不知道这是否是真正想要的问题。因为你可以只检查学生的程序。并且“程序代码”似乎是链接这两个表的一种奇怪方式。但是,如果只有这两个表,那么这就是唯一的选择。
【讨论】:
我得跟教授澄清一下。我将“C_”切换为“C%”,但它返回错误代码:1242 子查询返回超过 1 行 @SteveWong 。 . .使用IN
而不是=
。
返回 0 行,是我的“WHERE s.studentprogram”的问题吗?【参考方案2】:
我认为您正在寻找这样的查询:
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 的第一个答案中看到您的 cmets,如果 =
导致错误 Subquery returns more than 1 row
则使用 IN 不应返回 0 行。如果它仍然发生,你介意分享你在表格中的数据吗?仅当以 C
开头的 ProfessorProgram 没有与之关联的学生时才会发生这种情况。
希望我们能明确我们的观点并正确回答您的问题。
【讨论】:
啊,这是一个小小的修复!感谢您的帮助 乐于助人!您能否将有用的评论标记为答案,以便将来可以帮助其他面临同样问题的人?谢谢!以上是关于返回 0 行,为啥?的主要内容,如果未能解决你的问题,请参考以下文章
在 PHP 中,为啥 mysqli_num_rows 不为返回行数为 0 的查询返回整数?