我有以下结构
Table1
ID SpecificName Value Modified
3 Drogon 73 0
4 Viserion 44 0
5 Rhaegal 70 0
Table2
ID SpecificName Value Modified
8 Drogon 87 0
9 Viserion 20 0
10 Rhaegal 70 0
我想修改Table1.SpecificName == Table2.SpecificName AND Table1.Value != Table2.Value
的修改列值,并返回类似:
Table3
SpecificName Value Modified
Drogon 87 1
Viserion 20 1
Rhaegal 70 0
如何实现这一目标?
答案 0 :(得分:1)
要获得所需的结果,您可以使用CASE
select t2.SpecificName, t2.value,
case when (t1.value <> t2.value) then 1
when (t1.value = t2.value) then 0
ELSE NULL
end
from table1 t1
inner join table2 t2
on t1.SpecificName = t2.SpecificName;
内连接用于假设只需要匹配值。 以下是使用上述查询根据需要生成的结果。
您可以查看演示here
答案 1 :(得分:0)
select t1.SpecificName,
t2.Value,
case when t1.Value != t2.Value then 1 else 0 end as Modified
from t1 left join t2 on t1.SpecificName = t2.SpecificName
我们加入两个表(左连接也用于处理缺失值)。
我们引入一个Modified列,其值基于比较原始表和连接表。如果值相同则Modified为0.