我有两个表:scans
和personel
。在scans
中,有一列createdby
,其中创建扫描的人员的用户名就在那里。我需要创建一个视图,在哪里查看这些扫描但不是用户名,我想查看表personel
中我所拥有的人的全名。此查询主要有效:
select personel.firstname ||' '|| personel.lastname as CREATEDBY
from scans inner join personel on scans.createdby = personel.username;
问题是scans.createdby
中的某些用户名在personel
表中已不再存在,并且上述查询未检索到他们的扫描,因为createdby
中的值1}}列与username
列中的任何值都不匹配。
因此,对于这种情况,我想从createdby
输出这些扫描的值。
所以如果:
scans.createdby = personel.username
=>显示全名
但是如果:
scans.createdby
不匹配任何personel.username
=>显示scans.createdby
的用户名而不是全名
答案 0 :(得分:2)
select ifnull(personel.firstname + ' ' + personel.lastname, scan.createdby) as CREATEDBY
from scans
LEFT join personel on scans.createdby = personel.username;
答案 1 :(得分:2)
您想要从scans
到personel
的左连接,并且您应该使用coalesce运算符(例如SQL Server中的ISNULL
或COALESCE
)或函数来创建{查询结果中的{1}}列。
答案 2 :(得分:2)
select case when personel.username is null then scans.createdby else personel.firstname ||' '|| personel.lastname end as CREATEDBY
from scans left outer join personel on scans.createdby = personel.username;