MySQL中将A表中的字段值赋值给B表中的字段
  在⼯作中设计到⼀些字段值的初始化,特别是⽣产系统中添加字段时处理历史数据的初始化,往往需要更新字段值,这⾥说说将A表中的字段值赋值给B表中的字段的⼏种更新⽅法。
  1、通过⼦查询实现
UPDATE tableA a
lumn1 = (
SELECT
FROM
tableB b
WHERE
a.id =
b.aid
),
SELECT
FROM
tableB b
WHERE
a.id =
b.aid
)
WHERE
EXISTS (
SELECT
1
FROM
BtableB c
WHERE
a.id = c.aid
);
mysql中select
  2、通过逗号操作符的内连接
UPDATE tableA a,
tableB b
lumn1 = b.column1,
WHERE
a.id =
b.aid;
  3、各种内、外连接都可以实现
UPDATE tableA a
LEFT JOIN tableB b ON a.id = b.aid
lumn1 = b.column1,
  4、SQL允许的各种连接,并根据CASE函数控制不同类型数据更新不同的值
UPDATE system_alarm s LEFT JOIN (
SELECT a.id aid,
(
CASE a.alarm_type
WHEN'1'THEN d.p1_min
WHEN'2'THEN d.p1_max
WHEN'5'THEN d.p2_min
WHEN'6'THEN d.p2_max
ELSE0
END
) AS num
FROM system_alarm a LEFT JOIN device d ON a.device_id=d.device_id
) aaa
ON s.id=aaa.aid
SET s.threshold=aaa.num;
  这⾥没有⽤伪SQL,因为结合实际业务更好理解,⼤概说⼀下这条SQL的实际业务逻辑:设备的报警表中添加了新的字段:threshold(阈值),⽤来保存报警时的阈值,需要根据不同的报警类型把历史报警的对应阈值放⼊新字段中,这⾥统⼀把当前的设备阈值保存到新字段,因修改过阈值⽽产⽣的不合理数据另外进⾏针对性的处理。