如何在表中新增取值来自另一张表的列?对应SQL语法如何编写?
实现语法说明
- 前置条件:Table A和Table B存在共同关联字段(通常是
product_id类字段,为Table B的主键,Table A中存储对应值)
步骤1:在Table A中新增productname字段
执行以下SQL新增字段,字段类型、长度需和Table B的productname字段完全一致:
ALTER TABLE TableA ADD COLUMN productname VARCHAR(255); -- 请根据实际字段类型修改括号内参数
步骤2:关联Table B更新Table A的productname取值
不同数据库的更新语法略有差异,对应示例如下:
MySQL 写法
UPDATE TableA a INNER JOIN TableB b ON a.product_id = b.product_id -- 替换为实际的关联字段名 SET a.productname = b.productname;
PostgreSQL / SQL Server 写法
UPDATE TableA a SET productname = b.productname FROM TableB b WHERE a.product_id = b.product_id; -- 替换为实际的关联字段名
Oracle 写法
UPDATE TableA a SET productname = (SELECT b.productname FROM TableB b WHERE a.product_id = b.product_id) WHERE EXISTS (SELECT 1 FROM TableB b WHERE a.product_id = b.product_id);
补充说明:如果需要保证两个表的productname永远同步,不建议冗余存储该字段,查询时直接关联Table B获取即可;如果确实需要存储,可以额外添加触发器实现更新同步。
内容的提问来源于stack exchange,提问作者Dita Mariessa Izza
相关产品推荐
相关产品推荐

