我想執行一個SELECT查詢連接到一個LEFT JOIN連接表中可能沒有記錄的兩個表上。喜歡的東西:SQL Server - 選擇左連接NULL記錄在哪裏條件
--SELECT row using AreaID
SELECT *
FROM Rate
LEFT JOIN Area
ON Rate.AreaID = Area.AreaID
WHERE ProductID = @ProductID
AND Area.PostcodeOutcode = @PostcodeOutcode
這工作時,在區表中存在@PostcodeOutcode,但我仍然需要退回紀錄左表如果沒有在正確的表中的記錄。
我目前捏造它通過這樣做,但我知道有一個更好的解決方案:
DECLARE @AreaID int
SELECT @AreaID = AreaID
FROM Area WHERE PostcodeOutcode = @PostcodeOutcode
--SELECT row using AreaID
SELECT *
FROM Rate
WHERE ProductID = @ProductID
AND
(
AreaID = @AreaID
OR (@AreaID IS NULL AND AreaID IS NULL)
)
我知道這可能是簡單的,但我的SQL知識是有限的。請幫忙。
感謝
亞歷
你確實在說SELECT *是一個SQL反模式?你的回報超過了你的需要(在最少的情況下連接字段重複),這對性能不利。生產代碼通常不應包含select *。 – HLGEM