簡體   English   中英

返回 0 行,為什么?

[英]0 rows returned, why?

誰能幫我理解為什么我返回 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

表達方式:

WHERE p.ProfessorProgram LIKE 'C_'

正在檢查ProfessorProgram是否以'C'開頭並且它正好有兩個字符。

這個問題可能是為了:

WHERE p.ProfessorProgram LIKE 'C%'

我不知道這是否是問題真正想要的。 因為你可以只檢查學生的程序。 並且“程序代碼”似乎是鏈接這兩個表的一種奇怪方式。 但是,如果這是僅有的兩個表,那么這將是唯一的選擇。

我認為您正在尋找這樣的查詢:

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 的第一個答案的評論,如果有=導致錯誤Subquery returns more than 1 row ,那么使用 IN 不應該返回 0 行。 如果它仍然發生,你介意分享你在表格中的數據嗎? 僅當以C開頭的 ProfessorProgram 沒有與之關聯的學生時,才會發生這種情況。

希望我們能明確我們的觀點並正確回答您的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM