【问题标题】:Comparing values returned by query to another query to see if they exist in both将查询返回的值与另一个查询进行比较以查看它们是否存在于两者中
【发布时间】:2022-11-12 14:06:26
【问题描述】:

我正在编写一个查询,需要检查一个查询的结果(每个不同的值)是否不存在于另一个查询(查询不同的值)中。

例如,

如果 Query1 结果是:(1, 2, 3, 4) 并且 Query2 结果是 (1, 2, 5),我需要返回我写的失败消息。

在另一个示例中,如果 Query1 结果类似于:(1, 1, 1, 2, 3) 并且 Query2 结果是:(1, 2, 3),那么我不会返回消息。

目前,我使用 TOP 1 运行了查询,但这仅检查顶部记录是否相等。我将如何检查每个结果是否匹配?如果我可以使用 COUNT 函数来做到这一点,那也将非常有益。

这是我所拥有的:

SELECT TOP 1 @result = t1.result FROM results t1 WHERE t1.id LIKE '%00%'
SELECT TOP 1 @result2 = t1.result FROM results t1 WHERE t1.id LIKE '%11%'

IF ISNULL(@result, '') <> ISNULL(@result, '') 
PRINT 'ERROR'

我已经能够使用 COUNT 和 EXCEPT 来检查它们是否匹配。但是,我不确定结果是否正确,或者它是否是我正在寻找的。

SELECT COUNT(*) FROM results t1 WHERE t1.id LIKE '%00%'
EXCEPT 
SELECT COUNT(*) FROM results t1 WHERE t1.id LIKE '%11%'

【问题讨论】:

  • 为什么要数?只需检查 EXCEPT 是否为空两次

标签: sql sql-server count


【解决方案1】:

使用除了似乎合适,如果我理解你的问题,但你不想比较计数,你想比较行,也许像

select Result = case when exists (
    select distinct <col> from results where...
    except
    select distinct <col> from results where...
) then 'Error' else 'No error' end;

我不确定您是否需要“双向”,但您可能也想联合相反。

【讨论】:

    猜你喜欢
    • 2020-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-14
    • 2021-07-14
    • 1970-01-01
    • 2011-05-28
    • 1970-01-01
    相关资源
    最近更新 更多