使用SubQuery进行MySQL Workbench UPDATE查询

时间:2016-06-19 22:48:59

标签: mysql subquery mysql-workbench

我正在尝试创建一个使用子查询来更新客户地址和帐单地址的更新查询,但是我无法完全理解如何去做。这是我的剧本。

drop table if exists billing_information;
drop table if exists customer;
drop table if exists product;
drop table if exists zip_code;
drop table if exists orders;


create table customer
(
    Customer_ID     integer(10) primary key,
    First_Name      varchar(25) not null,
    Last_Name       varchar(25) not null,
    Street_Address  varchar(50),
    Zip             integer(11),
    Product_ID      integer(10)
);

create table zip_code
(
    Zip             integer(11) primary key,
    City            varchar(25) not null,
    State           varchar(25) not null
);

create table product
(
    Product_ID      integer(10) primary key,
    Serial_Number   varchar(10) not null,
    Product_Name    varchar(25),
    cost            varchar(25) 
);

create table billing_information
(
    Customer_ID     integer(10) primary key,
    Street_Address  varchar(50) not null,
    Zip             integer(11) not null

);

create table orders
(
order_id integer(10),
Customer_ID integer(10) not null,
Product_ID integer (10) not null
);

alter table customer
add foreign key (Zip) references zip_code(Zip),
add foreign key (Product_ID) references product(Product_ID);

alter table billing_information
add foreign key (Customer_ID) references customer(Customer_ID),
add foreign key (Zip) references zip_code(Zip);

alter table orders
add foreign key (Customer_ID)   references customer(Customer_ID),
add foreign key (Product_ID)    references product(Product_ID);

set foreign_key_checks=0;

insert into customer (Customer_ID, First_Name, Last_Name, Street_Address, Zip, Product_ID)
values  (1,'Tristin','Damon','779 Homestead Drive Hendersonville', 28792, 1),
        (2,'Whitney','Davis','885 Route 10 Wyandotte',48192, 2),
        (3,'Dyson','Harvie','121 Creekside Drive Waynesboro',17268, 3),
        (4,'Ward','Horatio','902 5th Street South North Bergen',07047, 4),
        (5,'Jem','Stanford','534 Broadway Pawtucket',02860, 5);

insert into zip_code(Zip,City,State)
values  (28792, 'Hendersonville', 'NC'),
        (48192, 'Wyandotte', 'MI'),
        (17268, 'Waynesboro', 'PA'),
        (07047, 'North Bergen', 'NJ'),
        (02860, 'Pawtucket', 'RI');

insert into product (Product_ID,Serial_Number,Product_Name, cost)
values  (1, 'N9TT-9G0A', 'C&C Red Alert', 3.99),
        (2, 'QK6A-JI6S', 'C&C Yuris revenge', 9.99),
        (3, 'XNSS-HSJW', 'C&C Red Alert 3', 19.99),
        (4, 'NHLE-L6MI', 'C&C Tiberium Sun', 3.99),
        (5, '6ETI-UIL2', 'C&C 4', 29.99);
-- dont ever buy this game, it's terrible also EA is a terrible company

insert into billing_information (Customer_ID, Street_Address, Zip)
values  (1,'779 Homestead Drive Hendersonville', 28792),
        (2,'885 Route 10 Wyandotte',48192),
        (3,'121 Creekside Drive Waynesboro',17268),
        (4,'902 5th Street South North Bergen',07047),
        (5,'534 Broadway Pawtucket',02860);

insert into orders (order_id, customer_id, Product_ID)
values  (1, 1, 1),
        (2, 2, 2),
        (3, 3, 3),
        (4, 4, 4),
        (5, 5, 5);


set foreign_key_checks=1;

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

不确定你想要做什么业务逻辑,我想你可能需要这个,试试吧;)

update customer c
inner join billing_information b
on c.Customer_ID = b.Customer_ID
set c.Street_Address = 'XXXXXX', b.Street_Address = 'XXXXXX'