zoukankan      html  css  js  c++  java
  • mysql 两个关联表如何更新其中一个表的数据

    今天遇到一个客户的数据更新问题,两个相关联的表,一个主表用于保存单据主要信息,一个副表用于保存单据的明细信息;现在要把主表的其中一个字段的数据更新到副表的一个字段中保存。

    假设:
    A表是主表,有单号order_id、开单人operator、开单日期oper_date、备注memo等;
    B表是副表,有单号order_id、序号id、商品编码code、商品名称name、备注memo等。
    A表的备注是有数据的,B表的备注没有数据,现在要把A表的数据更新到B表,并且B表有数据的不能更新了。A表与B表是以单号来关联的。
    更新数据的SQL语法如下:

    update B,A set B.memo=A.memo
    where A.order_id=B.order_id and (B.memo is null or B.memo='');

    create table A
    (
        order_id int not null auto_increment,
        operator varchar(50),
        oper_date date,
        memo varchar(50),
        primary key(order_id)
    );
    
    create table B
    (
        order_id int not null auto_increment,
        good_id int,
        good_code int,
        good_name varchar(50),
        memo varchar(50),
        primary key (order_id)
    );
    
    insert into A values 
    (1,'onion2',now(),'测试1'),
    (2,'onion2',now(),'测试2'),
    (3,'onion3',now(),'测试3');
    
    insert into B values
    (1,1,0001,'good1','已经备注');
    
    insert into B (order_id,good_id,good_code,good_name) values 
    (2,2,0002,'good2'),
    (3,3,0003,'good3');
    
    update B,A set B.memo=A.memo
    where A.order_id=B.order_id and (B.memo is null or B.memo='');

  • 相关阅读:
    LINUX服务器上新增用户名
    Mac OS X 常用快捷键
    leetcode 学习心得 (2) (301~516)
    leetcode 学习心得 (1) (24~300)
    C 实现简单的栈
    Hbase压力测试
    hadoop,yarn和vcpu资源配置
    ubuntu14通过trove/redstack安装openstack环境
    fedora 使用trove的redstack 安装openstack环境
    fedora22 mysql安装
  • 原文地址:https://www.cnblogs.com/huangcongcong/p/4004296.html
Copyright © 2011-2022 走看看