簡體   English   中英

SQL 存在於表A或表B中

[英]SQL Exist in either TableA or TableB

我正在嘗試創建一個腳本,該腳本需要一個子句來檢查表 3 中的列值是否存在於表 1 或表 2 中

SELECT *      
FROM [ZERO_BALANCE].[DBO].[dat_acct_codes_REJECTIONS] ACR
WHERE [REJECTIONREASON] = 'MISSING LINKING ACCOUNT'
AND 
EXISTS 
(SELECT 1 FROM ref_PX WHERE CAST(PX AS VARCHAR(MAX)) = CAST(ACR.[Code] AS VARCHAR(MAX))
OR
(SELECT 1 FROM ref_DX WHERE CAST(DX AS VARCHAR(MAX)) = CAST(ACR.[Code] AS VARCHAR(MAX)))

消息 4145,級別 15,State 1,第 44 行 在預期條件的上下文中指定的非布爾類型表達式,靠近“)”。

您的查詢存在問題:

  • CAST() function 上缺少括號(由Dale Burrell評論)

  • 您需要為每個條件重復EXISTS關鍵字

  • 注意運算符優先級: OR的優先級低於AND ,因此,據我了解您的查詢,您的OR ed 條件應該用括號括起來。

正確的格式有助於發現這種東西。

SELECT *      
FROM [ZERO_BALANCE].[DBO].[dat_acct_codes_REJECTIONS] ACR
WHERE 
    [REJECTIONREASON] = 'MISSING LINKING ACCOUNT'
    AND (
        EXISTS (
            SELECT 1 
            FROM ref_PX 
            WHERE CAST(PX AS VARCHAR(MAX)) = CAST(ACR.[Code] AS VARCHAR(MAX))
        )
        OR EXISTS (
            SELECT 1 
            FROM ref_DX 
            WHERE CAST(DX AS VARCHAR(MAX)) = CAST(ACR.[Code] AS VARCHAR(MAX))
        )
    )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM