Sql 从包含空值的列中选择

Sql 从包含空值的列中选择,sql,postgresql,Sql,Postgresql,我正在尝试创建包含各种外键的SELECT,以列出它拥有的所有行,但是有两个外键可以为null bank\u id和bbank\u id可以为空,因此在本例中,它只列出bank\u id和bbank\u id中没有空值的行,但我需要它返回bank\u id和bbank\u id为空或不为空的行。 我试过使用不为NULL和NULL,但它不起作用 选择E.emp_id、E.emp_name、E.emp_姓氏1、E.emp_姓氏2、, J.工作名称,U.ubi名称,D.dep名称,POR.POR类型,

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

bank\u id
bbank\u id
可以为空,因此在本例中,它只列出
bank\u id
bbank\u id
中没有空值的行,但我需要它返回
bank\u id
bbank\u id
为空或不为空的行。 我试过使用
不为NULL和NULL
,但它不起作用

选择E.emp_id、E.emp_name、E.emp_姓氏1、E.emp_姓氏2、,
J.工作名称,U.ubi名称,D.dep名称,POR.POR类型,
B.银行名称,BB.银行名称
来自public.employee E,public.ubi U,
公共就业J,公共部门D,
public.percentable POR,public.bank B,
公共银行
其中E.ubi_id=U.ubi_id,E.job_id=J.job_id
E.dep_id=D.dep_id,E.por_id=por.por_id
E.bank_id=B.bank_id和E.bbank_id=BB.bbank_id
E.ubi_id不为NULL,E.job_id不为NULL,E.dep_id不为NULL
E.por_id不为空,E.bank_id不为空,E.bbank_id不为空
由E.emp_id ASC订购;

我读了一些关于使用左连接的内容,但不知道如何在这里实现它。

您需要使用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了,不记得如何使用内部联接了,我自己也试过了,但还是出现了很多错误。谢谢。@我建议穿刺者解释OP需要外部连接的原因,因为他在问题中使用了内部连接,并在对你的答案的评论中提到了内部连接。