sql查询更新表,其他表中缺少字段

时间:2014-10-31 01:38:38

标签: mysql sql join

我遇到了SQL查询/ SP的问题,我试图在另一个表中的特定字段中更新缺少数据的表,其中这些字段中的数据存在且有效。这里的诀窍是我想锚定第一个表中的值。我可以使用INSERT INTO / SELECT FROM组合,但它会创建重复记录。

我正在使用mysql 5.x.这是详细信息。缺少数据的表为thisweek,包含有效数据的表为lastweek。字段1是MACAddress(存在并且是锚)并且存在于两个表中(例如BE:EF:BA:BE:CA:FE),thisweek中的字段2-10是空白的(''),但表格lastweek中的相同字段(字段2-10)中有数据。

UPDATE thisweek
SET thisweek.field2 = lastweek.field2
where thisweek.MACAddress = lastweek.MACAddress and thisweek.filed2 = ''; 

我知道查询并不是关闭的,所以寻求帮助。同样,两个表中都存在相同的MACAddressthisweek中的field2之间的唯一区别是空白(并且它不应该是)并且需要等于{{1对于那个lastweek.field2

谢谢大家。

3 个答案:

答案 0 :(得分:0)

你需要加入本周和上周的表格。

UPDATE thisweek
JOIN lastweek
ON thisweek.MACAddress = lastweek.MACAddress
AND thisweek.field2 =''
SET thisweek.field2 = lastweek.field2

答案 1 :(得分:0)

我想你想要以下内容:

UPDATE tw 
  SET tw.Field2 = lw.Field2
FROM
  ThisWeek tw 
  JOIN LastWeek lw ON tw.MACAddress = lw.MACAddress
WHERE
  tw.Field2 = ''

答案 2 :(得分:0)

update table1 
inner join table2 on table1.id = table2.id and (table1.name = '' or table1.name is null) 
set table1.name = table2.name;