SQL,如果没有语法
谁能告诉我下面的代码有什么问题吗SQL,如果没有语法,sql,if-statement,sql-server-2016,notin,Sql,If Statement,Sql Server 2016,Notin,谁能告诉我下面的代码有什么问题吗 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) 非常感谢。使
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)
非常感谢。使用
存在
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
您的联接有可能返回多个值,您的查询将失败。使用
存在
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
您的联接有可能返回多个值,并且您的查询将失败。您也可以使用count函数 这样试试
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 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
我认为您希望OP的逻辑使用
exists
,但这绝对是比使用count()
更好的解决方案。我认为您希望OP的逻辑使用exists
,但这绝对是比使用count()
更好的解决方案。