gpt4 book ai didi

sql - 从包含空值的列中选择

转载 作者:行者123 更新时间:2023-11-29 13:09:55 25 4
gpt4 key购买 nike

我正在尝试创建包含各种外键的 SELECT 以列出它拥有的所有行,但有两个外键可以为空。

bank_idbbank_id 可以为空,因此在这个例子中它只会列出 bank_id 中没有空值的行,并且bbank_id,但我需要它返回 bank_idbbank_id 为空或不为空的行。我尝试使用 IS NOT NULL AND NULL,但它不起作用。

SELECT E.emp_id, E.emp_name, E.emp_surname1, E.emp_surname2,  
J.job_name, U.ubi_name, D.dep_name, POR.por_type,
B.bank_name, BB.bbank_name
FROM public.employee E, public.ubi U,
public.jobs J, public.department D,
public.percenttable POR, public.bank B,
public.bbank BB
WHERE E.ubi_id = U.ubi_id AND E.job_id = J.job_id
AND E.dep_id = D.dep_id AND E.por_id = POR.por_id
AND E.bank_id = B.bank_id AND E.bbank_id = BB.bbank_id
AND E.ubi_id IS NOT NULL AND E.job_id IS NOT NULL AND E.dep_id IS NOT NULL
AND E.por_id IS NOT NULL AND E.bank_id IS NOT NULL AND E.bbank_id IS NOT NULL
ORDER BY E.emp_id ASC;

我阅读了一些有关使用 LEFT JOIN 的内容,但不知道如何在此处实现它。

最佳答案

您需要使用 27 年前在 SQL-92 标准中定义的现代 JOIN 语法。以下是使用左外连接 时您的查询应该如何显示:

select 
e.emp_id, e.emp_name, e.emp_surname1, e.emp_surname2,
j.job_name, u.ubi_name, d.dep_name, por.por_type,
b.bank_name, bb.bbank_name
from public.employee e
left join public.ubi u on e.ubi_id = u.ubi_id
left join public.jobs j on e.job_id = j.job_id
left join public.department d on e.dep_id = d.dep_id
left join public.percent por on e.por_id = por.por_id
left join public.bank b on e.bank_id = b.bank_id
left join public.bbank bb on e.bbank_id = bb.bbank_id
where e.ubi_id is not null
and e.job_id is not null
and e.dep_id is not null
and e.por_id is not null
-- and e.bank_id is not null -- removed per your requirement
-- and e.bbank_id is not null -- removed per your requirement
order by e.emp_id asc

欢迎来到21世纪! ;-)

关于sql - 从包含空值的列中选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56266700/

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