2012-11-29 146 views
1

fieldidEmpIdReason的連接。有時候,由於編寫不正確的代碼邏輯,偶然發生的連接並不正確,它使用與當前記錄不同的EmpId如何選擇同一個表中兩列連接的列?

如何找出這樣的錯誤記錄?

我試過這個,但不用留下,它的笨。

SELECT * FROM Table WHERE fieldid IN (SELECT Empid + Reason FROM EmployeeAttendance) 

我使用SQL Server 2008的EmpidReasonfieldid是VARCHAR處理。

謝謝。

+3

SQL-服務器:'SELECT * FROM表WHERE fieldid <> EMPID +理由或fieldid IS NULL'。用'||'替換Oracle和MySQL。 –

+0

@ypercube對,你的查詢很有意義。但我也獲得滿足上述條件的記錄。數據類型在玩? – theTuxRacer

+0

@ypercube你可以說你的評論作爲答案?我想接受它。謝謝! – theTuxRacer

回答

2

對於SQL服務器:

SELECT * 
FROM TableX 
WHERE fieldid <> Empid + Reason 
    OR fieldid IS NULL  AND (Empid + Reason) IS NOT NULL 
    OR fieldid IS NOT NULL AND (Empid + Reason) IS NULL ; 
相關問題