SQL IF NOT IN 语法
SQL IF NOT IN syntax
谁能告诉我下面的代码有什么问题吗?
IF (SELECT T0.U_DestType FROM OCRD T0 INNER JOIN ODLN T1 ON T1.CardCode = T0.CardCode WHERE T1.DocEntry ='4') NOT IN ('1','2','6')
BEGIN
SELECT 'SHOW_ERROR' FOR BROWSE
END
它编译没有错误但没有给出预期的结果(当 U_DestType 不是 1,2 或 6 时声明 SHOW_ERROR)
非常感谢。
使用Exists
IF Exists
(SELECT 1 FROM OCRD T0 INNER JOIN ODLN T1 ON T1.CardCode = T0.CardCode WHERE T1.DocEntry ='4' and T0.U_DestType NOT IN ('1','2','6'))
Begin
--some quwery
End
您的联接有可能 return 多个值并且您的查询将失败。
您还可以使用计数功能
试试这个
IF ((SELECT count(T0.U_DestType) FROM OCRD T0 INNER JOIN ODLN T1 ON T1.CardCode = T0.CardCode WHERE T1.DocEntry ='4') NOT IN ('1','2','6'))==0)
BEGIN
SELECT 'SHOW_ERROR' FOR BROWSE
END
谁能告诉我下面的代码有什么问题吗?
IF (SELECT T0.U_DestType FROM OCRD T0 INNER JOIN ODLN T1 ON T1.CardCode = T0.CardCode WHERE T1.DocEntry ='4') NOT IN ('1','2','6')
BEGIN
SELECT 'SHOW_ERROR' FOR BROWSE
END
它编译没有错误但没有给出预期的结果(当 U_DestType 不是 1,2 或 6 时声明 SHOW_ERROR)
非常感谢。
使用Exists
IF Exists
(SELECT 1 FROM OCRD T0 INNER JOIN ODLN T1 ON T1.CardCode = T0.CardCode WHERE T1.DocEntry ='4' and T0.U_DestType NOT IN ('1','2','6'))
Begin
--some quwery
End
您的联接有可能 return 多个值并且您的查询将失败。
您还可以使用计数功能 试试这个
IF ((SELECT count(T0.U_DestType) FROM OCRD T0 INNER JOIN ODLN T1 ON T1.CardCode = T0.CardCode WHERE T1.DocEntry ='4') NOT IN ('1','2','6'))==0)
BEGIN
SELECT 'SHOW_ERROR' FOR BROWSE
END