2016-08-05 29 views
0

誰能告訴我什麼是錯用下面的代碼嗎?SQL如果不是在語法

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 

它編譯沒有錯誤,但是沒有得到預期的結果(聲明SHOW_ERROR當U_DestType比1,2其它任何東西,或6)

非常感謝。

回答

1

您還可以使用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 
+0

這實際上效果更好。非常感謝 – coblenski

+0

@JohnCobby最受歡迎 –

4

使用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 

有你的加入可能會返回一個以上的價值和您的查詢就會失敗一個機會。

+1

那太好了,非常感謝你。 – coblenski

+1

我認爲你希望'存在'爲OP的邏輯,但這絕對是比使用'count()'更好的解決方案。 –

+0

@戈登林諾夫:沒錯,謝謝 – TheGameiswar