返回包含在两个版本之间修改行的值的新表

时间:2017-08-14 08:13:01

标签: mysql sql

我有以下结构

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 

如何实现这一目标?

2 个答案:

答案 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;

内连接用于假设只需要匹配值。 以下是使用上述查询根据需要生成的结果。

enter image description here

您可以查看演示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.