2017-08-27 53 views
-1

我嘗試瞭解外部連接,並且我收到了一個問題。內部連接可以有空列

假設所有列不爲空,此查詢後:

SELECT a.service_type_id, b.customer_member_id, a.service_name 
FROM CUSTOMER_SERVICE_TYPE a, 
    MEMBER_CUSTOMER_SERVICES b 
WHERE a.service_type_id = b.service_type_id; 

是否有可能獲得空字段列的一個?

+2

您的示例查詢是INNER JOIN,它將檢查兩個表中的service_type_id是否匹配。列上將不會有空值。如果您使用OUTER JOIN並且存在與您的條件不符的數據(a.service_type_id = b.service_type_id),那麼列上將會出現空值。 –

+0

你可以檢查這個鏈接關於JOINS https://stackoverflow.com/questions/17946221/sql-join-and-different-types-of-joins –

+0

今天提示:切換到現代,明確的'JOIN'語法。易於編寫(沒有錯誤),更易於閱讀(和維護),並且在需要時更容易轉換爲外部聯接。 – jarlh

回答

2

首先,你問題的標題是「外連接」,但你的查詢是內連接。

其次,查詢格式不正確,使用陳舊的語法。它應該是:

SELECT cs.service_type_id, mcs.customer_member_id, cs.service_name 
FROM CUSTOMER_SERVICE_TYPE cs JOIN 
    MEMBER_CUSTOMER_SERVICES mcs 
    ON cs.service_type_id = mcs.service_type_id; 

第三,你的問題的答案是「否」。如果查詢中沒有任何源列是NULL,則沒有列可以是NULL。如果它確實是OUTER JOIN,則列可以是NULL

注:

  • 始終使用得當,明確JOIN語法。 從不FROM條款中使用逗號。
  • 你的表別名應該是列名的縮寫,而不是無意義的字母。