我不是100%確定你想要找到什麼,但它聽起來像你想要表1上的記錄不在表2上,基於日期,類型和數量。
如果是左連接和檢查對NULL字段可能做到這一點的最好辦法: -
SELECT table1.*
FROM table1
LEFT OUTER JOIN table2
ON table1.Date = table2.Date
AND table1.Type = table2.Type
AND table1.Amount = table2.Amount
WHERE table2.TId IS NULL
可能是這樣的(根據您的具體要求)。這應該從table1中獲取所有記錄,並將其與記錄的日期,類型和金額相匹配,並且tid是該記錄的第一個記錄。然後加入table2。如果在table2上沒有匹配,或者存在匹配,但table1上的記錄不是第一個匹配的記錄,則記錄放出。
只有在table2上沒有重複的情況下,該功能纔有效。
SELECT table1.*
FROM table1
LEFT OUTER JOIN
(
SELECT Date, TYPE, AMOUNT, MIN(TId) AS TId
FROM table1
) t11
ON table1.Date = t11.Date
AND table1.Type = t11.Type
AND table1.Amount = t11.Amount
AND table1.TId = t11.TId
LEFT OUTER JOIN table2
ON table1.Date = table2.Date
AND table1.Type = table2.Type
AND table1.Amount = table2.Amount
WHERE (t11.TId IS NULL
AND table2.TId IS NOT NULL)
OR table2.TId IS NULL
想要的結果是什麼?有什麼區別的條件? – Rahul 2014-10-30 14:44:34
希望的結果是將表1中的記錄3和4返回。 – pwills 2014-10-30 14:52:59
好,但區分它們的條件/業務邏輯是什麼? – Rahul 2014-10-30 14:58:39