我有以下查詢加盟:LEFT JOIN未與單個記錄
Insert into cet_database.dbo.termData
(
termID,
studentID,
course,
[current],
program,
StbyCurrentClassID,
class,
classCode,
cancelled
)
Select
fm_stg.classByStudent_termData_assessmentData.termID,
fm_stg.classByStudent_termData_assessmentData.studentID,
fm_stg.classByStudent_termData_assessmentData.class_code,
case when fm_stg.classByStudent_termData_assessmentData.[current] = 'Yes' then 1 else 0 end,
fm_stg.classByStudent_termData_assessmentData.program,
fm_stg.classByStudent_termData_assessmentData.classByStudentID,
fm_stg.classByStudent_termData_assessmentData.class,
fm_stg.classByStudent_termData_assessmentData.classID,
case when fm_stg.classByStudent_termData_assessmentData.cancelled_flag = 1 then 1 else 0 end
From fm_stg.classByStudent_termData_assessmentData left outer join termData
On fm_stg.classByStudent_termData_assessmentData.class_code = termData.course
and fm_stg.classByStudent_termData_assessmentData.termID = termData.termID
and fm_stg.classByStudent_termData_assessmentData.studentID = fm_stg.classByStudent_termData_assessmentData.studentID
Where termData.StbyCurrentClassID is null
我使用查詢其導入到我的數據庫的表之前將數據導入從另一個數據庫(fm_stg.classByStudent_termData_assessmentData
)一個臨時表。此特定查詢是將數據導入到與termData
相關的多個表中的較大存儲過程的一部分。
當我運行sproc時,我得到的記錄插入到fm_stg.classByStudent_termData_assessmentData
中,但沒有插入到termData
中。當我遇到這個問題時,我只插入一條記錄,但它適用於我之前做過的10,000條記錄。我使用左連接來確定我的數據庫表中已經存在的內容以及哪些內容不存在,然後從暫存表中獲取相關記錄。然而,有了這個記錄:
316a, 39520, DEC 10, Yes, DEC10, 105713, DEC 10 (18), 6078, NULL, 2
該select返回什麼 - 爲什麼是這樣的?該記錄絕對不存在於我的termData
表中,並將記錄插入到登臺表中的所有其他表中。 sproc在事務中運行所有的插入操作,以避免這種情況下記錄被插入到某些表中而不是其他的表中,但似乎並不奏效。
那麼,沒有得到記錄的唯一原因應該是'WHERE'子句。刪除它並運行已更改的選擇查詢來查看您意外獲得的內容。 –
你能創建一個SQL小提琴來重現這個問題嗎?我沒有看到任何錯誤的查詢。 –
@TabAlleman我試着在SQL Fiddle(我以前沒用過)中創建它,但不能爲我的生活讓它做任何事情,例如,創建一個表。編輯:它似乎沒有在Firefox中工作...將創建一個演示。 – Ben