gpt4 book ai didi

SQL 左连接 - 如果 TableB 中两个值都不为 null 或 TableB 中缺少行,则获取值

转载 作者:行者123 更新时间:2023-12-02 20:05:23 26 4
gpt4 key购买 nike

http://sqlfiddle.com/#!18/d1cf0/6

TABLE HEADER 
(
[HeaderID] VARCHAR(3),
[description] VARCHAR(50),
[ProcessStatus] bit
);

TABLE DETAILS
(
[HeaderID] VARCHAR(3),
[DETAIL_VALUE_1] VARCHAR(50),
[DETAIL_VALUE_2] VARCHAR(50)
);

SELECT DISTINCT
H.HEADERID
FROM
HEADER H
LEFT JOIN
DETAILS D ON H.HeaderID = D.HeaderID
AND (D.DETAIL_VALUE_1 IS NOT NULL AND
D.DETAIL_VALUE_2 IS NOT NULL)
WHERE H.ProcessStatus = 0

根据 SQL Fiddle 中提供的示例数据,上述查询返回 1,2,3..

我需要查询仅返回 2,3,因为 header 1 具有其中 DETAIL_VALUE_1 不为空但 DETAIL_VALUE_2 的记录之一为空。

这些表可能有超过一百万条记录。 header 表是 anchor 。即 header 表将有一个标志“ProcessStatus”来指示哪些记录已被处理。

提前致谢。

最佳答案

在我看来,您想找到不存在“不良条件”的行......也许有点双重否定?

select 
H.HEADERID
from
HEADER H
where
not exists
(
select *
from
Details D
where
H.HeaderID= D.HeaderID
and
(
D.DETAIL_VALUE_1 IS NULL
or
D.DETAIL_VALUE_2 IS NULL
)
)

关于SQL 左连接 - 如果 TableB 中两个值都不为 null 或 TableB 中缺少行,则获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52173845/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com