這是一個非常簡單的問題,但是我還是 SQL 的新手,無法弄清楚這一點。我目前正試圖在我的查詢中指出我想要查看遠程作業并且在 IT、分析師和銷售人員中作業的員工的結果。
這是我現在的查詢(縮短):
SELECT a.EmpName, b.EmpNo, c.EmpTitle
FROM Table a
JOIN Table b ON a.EmpID = b.EmpID
JOIN Table c ON a.EmpID = c.EmpID
JOIN Table d ON a.EmpID = d.EmpID
JOIN Table e ON a.EmpID = e.EmpID
WHERE d.EmpRemoteFlag = ‘Y’
AND e.EmpType IN (‘IT’, ‘Analyst’, ‘Salesmen’)
按照此查詢的方式,EmpRemoteFlag = 'Y' 條件將被忽略,而 EmpType 條件則不會。
我試過在查詢中添加引數,我也試過在 WHERE 子句中的兩個條件周圍添加括號,但都沒有奏效;一個仍然被忽視。任何幫助是極大的贊賞!
uj5u.com熱心網友回復:
按照此查詢的方式,EmpRemoteFlag = 'Y' 條件將被忽略,而 EmpType 條件則不會。
不,你為什么這么說?您定義兩個條件并說“AND” - 這導致兩者都必須為真。EmpRemoteFlag 不會被忽略。
做一些測驗。
并回答瓷磚:不。這是您定義它們的方式。您可以將一些條件放入 JOIN 中,但一般方法是,那里的條件僅用于定義 Join,而 WHERE 子句用于過濾它們。作為一種方法,這是非常好的。
uj5u.com熱心網友回復:
查詢似乎很好,where 條件沒有問題,問題可能在于從右表中選擇 EmpRemoteFlag 列或某些連接條件問題。如果你能說出這 4 個表是什么以及你到底想要什么,它可能會有所幫助。不要專注于條件好的地方。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/338975.html
標籤:sql sql-server
