【发布时间】:2019-09-09 06:09:13
【问题描述】:
我有两个要在 SQL 中比较的表。当一个中的id 存在于另一个中时,我想要的结果是第二个表中数据的值;当它不存在时,它会在“值”字段名称中显示“数据不存在”。
例子
表 1
| id|
-----
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
| 8 |
| 9 |
| 10|
表 2
|id | value
---------
| 1 | 10|
| 2 | 9 |
| 3 | 7 |
| 4 | 8 |
| 5 | 6 |
我试过下面的查询:
select a.id,
CASE when exists(select a.id from table2 b where a.id = b.id)
THEN value
else 'Data Not Exist'
END as Result_Value
from table1 a inner join table2 b
on a.id=b.id
order by a.id;
结果是:
|id | Result_Value
---------
| 1 | 10|
| 2 | 9 |
| 3 | 7 |
| 4 | 8 |
| 5 | 6 |
上面不是我想要的结果,我的期望结果如下:
|id | Result_Value
---------
| 1 | 10 |
| 2 | 9 |
| 3 | 7 |
| 4 | 8 |
| 5 | 6 |
| 6 | Data Not Exist |
| 7 | Data Not Exist |
| 8 | Data Not Exist |
| 9 | Data Not Exist |
| 10| Data Not Exist |
注意:这是对我的查询的简单解释,因为我的查询很复杂,要使用内部连接连接另一个表,我不知道使用 select 存在我到底错在哪里。
【问题讨论】:
标签: sql sql-server