【发布时间】: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