我有两个表 - table1 和 table2。两张表的现状如下:
表格1:
id type mon tue wed thu fri sat sun
1 ets NULL NULL NULL NULL NULL NULL NULL
1 ets NULL NULL NULL NULL NULL NULL NULL
1 eta NULL NULL NULL NULL NULL NULL NULL
1 eta NULL NULL NULL NULL NULL NULL NULL
1 cl NULL NULL NULL NULL NULL NULL NULL
1 cl NULL NULL NULL NULL NULL NULL NULL
2 ets NULL NULL NULL NULL NULL NULL NULL
2 ets NULL NULL NULL NULL NULL NULL NULL
2 eta NULL NULL NULL NULL NULL NULL NULL
2 eta NULL NULL NULL NULL NULL NULL NULL
2 cl NULL NULL NULL NULL NULL NULL NULL
2 cl NULL NULL NULL NULL NULL NULL NULL
表2:
id ets eta cl
1 mon tue wed
1 thu fri sat
1 sun mon tue
2 sat sun mon
2 fri sat sun
请注意,table2 中的列名称是 table1 中的列“类型”。我想以这样一种方式更新 table1,即 mon-sun 列获取 table2 中针对相应“类型”(即 ets、eta 或 cl)的所有值的更新,并且 table1.id 应该与 table2.id 匹配。
对于上述数据,我想要的结果表如下所示:
id type mon tue wed thu fri sat sun
1 ets 1 NULL NULL 1 NULL NULL 1
1 ets 1 NULL NULL 1 NULL NULL 1
1 eta 1 1 NULL NULL 1 NULL NULL
1 eta 1 1 NULL NULL 1 NULL NULL
1 cl NULL 1 1 NULL NULL 1 NULL
1 cl NULL 1 1 NULL NULL 1 NULL
2 ets NULL NULL NULL NULL 1 1 NULL
2 ets NULL NULL NULL NULL 1 1 NULL
2 eta NULL NULL NULL NULL NULL 1 1
2 eta NULL NULL NULL NULL NULL 1 1
2 cl 1 NULL NULL NULL NULL NULL 1
2 cl 1 NULL NULL NULL NULL NULL 1
我正在应用的 UPDATE 查询如下:
update a
set a.mon = case b.ets when 'mon' then '1' else '0' end,
a.tue = case b.ets when 'tue' then '1' else '0' end,
a.wed = case b.ets when 'wed' then '1' else '0' end,
a.thu = case b.ets when 'thu' then '1' else '0' end,
a.fri = case b.ets when 'fri' then '1' else '0' end,
a.sat = case b.ets when 'sat' then '1' else '0' end,
a.sun = case b.ets when 'sun' then '1' else '0' end
from table1 a, table2 b
where a.id = b.id and a.type = 'ets'
考虑首先更新 tabletable1.type = 'ets'
和 table2 中与 id 匹配的 ets 的相应值。
上面的查询只从 table2 中获取第一个匹配值,并在 table1 中更新,而不是其余的。
任何帮助将不胜感激。