我需要创建一个匹配两个表的输出表。如果第二个表与第一个表不匹配,则返回列的默认值。
示例 -
表1 -
|---------------------|------------------|
| Id | Name |
|---------------------|------------------|
| 1 | Jon |
|---------------------|------------------|
| 2 | Dan |
|---------------------|------------------|
| 3 | Mark |
|---------------------|------------------|
| 4 | Phillips |
|---------------------|------------------|
| 5 | Watson |
|---------------------|------------------|
表2 -
|---------------------|------------------|
| Name | Result |
|---------------------|------------------|
| Jon | Pass |
|---------------------|------------------|
| Phillips | Pass |
|---------------------|------------------|
| Watson | Fail |
|---------------------|------------------|
带有连接的最终输出表,如果数据在第二个表中不匹配,则为其分配默认值“失败” -
|---------------------|------------------|------------------|
| Id | Name | Result |
|---------------------|------------------|------------------|
| 1 | Jon | Pass |
|---------------------|------------------|------------------|
| 2 | Dan | Fail |
|---------------------|------------------|------------------|
| 3 | Mark | Fail |
|---------------------|------------------|------------------|
| 4 | Phillips | Pass |
|---------------------|------------------|------------------|
| 5 | Watson | Fail |
|---------------------|------------------|------------------|
如何在SQL中实现这一目标。
答案 0 :(得分:2)
使用table2左连接table1并使用coalesce
将NULL值(当右表没有匹配时)替换为默认值:
select t1.id,
t1.name,
coalesce(t2.result, 'fail') as Result
from Table_1 as t1
left outer join Table_2 as t2 on t1.name = t2.name