SQL存在于表A或表B中

SQL存在于表A或表B中,sql,sql-server,tsql,select,where-clause,Sql,Sql Server,Tsql,Select,Where Clause,我试图创建一个脚本,它需要一个子句来检查表1或表2中是否存在表3中的列值 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 V

我试图创建一个脚本,它需要一个子句来检查表1或表2中是否存在表3中的列值

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)))

Msg 4145,第15级,状态1,第44行 在预期条件的上下文中指定的非布尔类型的表达式,靠近''


您的查询存在问题:

  • CAST()
    函数缺少括号(如的注释)

  • 您需要为每个条件重复
    EXISTS
    关键字

  • 请注意运算符的预相关性:
    的预相关性低于
    ,因此,据我所知,您的查询中,
    的条件应该用括号括起来

正确的格式有助于识别此类内容

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))
        )
    )

您的查询存在问题:

  • CAST()
    函数缺少括号(如的注释)

  • 您需要为每个条件重复
    EXISTS
    关键字

  • 请注意运算符的预相关性:
    的预相关性低于
    ,因此,据我所知,您的查询中,
    的条件应该用括号括起来

正确的格式有助于识别此类内容

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))
        )
    )