一使用情况
本情况适用于,表a和表b有唯一关联字段时期关联关系为1对1.且需求为:在关联字段相等情况瞎,用表b的字段值更新表a的字段值。
二 语法
---建立表A
CREAT A(
A1 VARCHAR(BYTE 10),
A2 VARCHAR(BYTE 10),
A3 VARCHAR(BYTE 10),
A4 VARCHAR(BYTE 10),
);
--建立表B
CREAT B(
B1 VARCHAR(BYTE 10),
B2 VARCHAR(BYTE 10),
B3 VARCHAR(BYTE 10),
B4 VARCHAR(BYTE 10),
);
UPDATE A SET (A1,A2,A3)=(
SELECT B1,B2,B3.B4 --此处和表A字段对应
FROM B WHERE A1=B,B1 -- 满足一对一关联关系
)
WHERE EXISTS( SELECT 1 FROM B WHERE B.B1=A1);--此处避免表b没有关联关系造成A表被更新的全是null的情况
三忠告
我在写这个文章的前5分钟,因为没有调试成功报错子查询返回多条记录的错误而怀疑此语法和逻辑的问题。经过向前辈请教,前辈提醒报错子查询返回多条,那么语法就没有错误。犯了在错误中着急而失去查找问题不去用逻辑排查的问题。可能在调试过程中你也会遇到此类问题,请耐心查找是否关系真的一对一。因为字段信息太多,我调试的存储过程可能有其他的限制条件没有care到。
四结束语
上诉内容也是我在网上按照需求收索并进行尝试,并且向前辈请教。如有写错的地方请谅解,但是整体思路和语法是没有问题,本文章的内容全部手敲,但是我站在了前辈们的脚踝处看世界。也感谢那些乐于奉献的前辈们。加油明天会更好,今天我学会了怎么去更新多行多列不是吗...