有人请在下面的SQL查询中解释'1 = 2'的含义.
SELECT E.EmpID,
E.EmpName,
Country = CASE
WHEN T.Active = 'N'
AND 1 = 2 THEN 'Not Working Anymore'
ELSE C.Country_Name
END,
T.Contract_No
FROM Employees E (nolock)
INNER JOIN Contract T
ON T.Contract_No = E.Contract_No
LEFT JOIN Country C (nolock)
ON E.Country_ID = C.Country_ID
Run Code Online (Sandbox Code Playgroud)
谢谢
编辑: - 纠正了我给出的示例SQL查询中存在的轻微错误.@ ALL: - 这里提到的查询是一个大工作查询的示例版本,我必须重新提供一些东西.为了简化问题,我创建了SQL查询的示例场景.
小智 19
如果要从另一个表创建表,但是您不想复制任何行,则可以很好地使用1=2该WHERE子句的这一部分.例如:
CREATE TABLE ABC_TEMP AS
SELECT * FROM ABC WHERE 1=2;
Run Code Online (Sandbox Code Playgroud)
when T.Active = 'N' and 1=2 then 'Not Working Anymore'
Run Code Online (Sandbox Code Playgroud)
简单,上述条件永远不会成为true.所以结果永远都是C.Country_Name
这是动态构造SQL过滤器子句的常用技巧.这允许自动构造"T.Active ='N'和"而不需要检查以下子句,因为将始终附加"1 = 2".
更新: 是否使用1 = 1或1 = 2取决于是否应该使用连接或析取正常形式来构建自动化子句.在这种情况下,似乎设计和实现不匹配.
更新2 我相信大多数开发人员更喜欢连接正常形式,主要术语由AND连接,但析取正常形式在表达能力和代码大小方面相同.