在实际处理数据过程中,有一些数据可能会从别的地方导入过来,两个表有关联,但是一个表中的某一列缺失,如果要补全,可以利用另一个表来做填充。这里就是今天的第一个问题,使用update的时候,join另一个表。
如下所示,xx_a中的数据是完整的,xx_b中的name是缺失的,假定xx_b中的user_id正好与xx_a中的id对应,这个时候,我们可以直接update修改xx_b,让xx_b.name = xx_a.name,但是需要给出关联条件与连接语句。
这里update语句的编写和查询语句有些类似,但是又有一些区别。update 的语法是
update xx_b set name = ${name} where id = ${id}
但是这里,我们需要关联xx_a,语句如下:
UPDATE xx_b b
LEFT JOIN xx_a a
ON b.user_id = a.id
SET b.name = a.name
SQL运行截图如下:
修改之后,发现两边的数据都一样了。
这种修改,背后隐藏的逻辑就是xx_a 、xx_b两边的数据是一一对应的,一个id对应另一个表,只有一个记录。但是,如果是一对多的问题,那么在查询的时候可能会出现很怪异