簡體   English   中英

我可以使用 LEFT OUTER JOIN 和 NULL 而不是一張表嗎?

[英]Can I use LEFT OUTER JOIN, and NULL, instead of one table?

假設我有這些表: 表

問題是: 題

我寫的查詢是

SELECT DISTINCT R.RID, R.Name
  FROM Restaurant R
  LEFT OUTER JOIN VISIT V
    ON V.RID = R.RID
  WHERE V.CID IS NULL

您認為這是處理此查詢的正確方法嗎? 它會導致任何問題嗎?

有多種方法可以解決這個問題,但使用左連接並查找空值是我的首選。 其他方法包括將 NOT EXISTS 與相關子查詢一起使用

SELECT id FROM r WHERE NOT EXISTS(
  SELECT 1 FROM v WHERE v.rid = r.id
)

並使用 MINUS 將整個餐廳 ID 列表減去訪問表中的餐廳 ID 列表

SELECT id FROM r
MINUS
SELECT rid FROM v

當然,在這種形式中,如果您想要從 restaurant 表中獲得更多數據,則必須進行連接

這不是一個詳盡的清單。 您的 left join 方法很好,“不會造成任何問題”(無論您認為它們是什么?)

你不需要使用distinct; 根據左連接的性質,在右側具有零訪問的行都是唯一的

暫無
暫無

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

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