資料庫基礎
表格R的欄位x有值為 1、1、2、3 的4筆資料列,表格S的欄位x有值為 1、1、2、4 的4筆資料列。SELECT * FROM R INNER JOIN S ON R.x = S.x 的結果有幾筆資料列?
- A2筆
- B3筆
- C5筆
查看答案與解析
正確答案:C. 5筆
在連結中,滿足條件的每一種資料列組合都會成為一筆結果。對 x = 1 而言,R的2筆與S的2筆的所有組合都滿足條件,共 2 × 2 = 4 筆;x = 2 則為 1 × 1 = 1 筆。R的3與S的4沒有對應的資料列,不會出現在內部連結的結果中。合計為 4 + 1 = 5 筆。2筆是認為每個相符的值(1與2)只產生一筆時的筆數。3筆是只檢查R的每筆資料列在S中是否有相符的值(如 SELECT * FROM R WHERE x IN (SELECT x FROM S) 這類查詢)時的筆數。若是不加條件的笛卡兒積,則為 4 × 4 = 16 筆。要注意連結欄位的值若有重複,結果的筆數會以相乘的方式增加。
- A. 這是認為每個相符的值(1與2)只產生一筆時的筆數。相同值的資料列之間,所有組合都會成為結果。
- B. 這是假設R的每筆資料列只連結一次時的筆數。重複的值會依組合數增加筆數。
- C. 正確。x = 1 的組合有 2 × 2 = 4 筆,加上 x = 2 的1筆,合計5筆。