通过连接两个表的SQL on Update属性

问题描述 投票:0回答:2

假设我有两张桌子,一张桌子是乘客,另一张桌子是卡。

create table passenger(
user_id char(20) not null unique,
name char(20),
age integer,
pin integer,
card_num char(20) unique,,
foreign key (card_num) references card);

create table card(
card_num char(20) primary key,
balance number(10,2),
cvn char(20) );

如果我想更新一位乘客的卡余额,SQL应该怎么写?非常感谢。

mysql sql database oracle database-design
2个回答
0
投票

对于MySql,您需要像这样在UPDATE语句中加入表:

update card c
inner join passenger p
on p.card_num = c.card_num
set c.balance = ?
where p.name = ? 

并且对于Oracle:

update card c
set c.balance = ?
where c.card_num = (
  select p.card_num
  from passenger p
  where p.name = ?
)

0
投票

您的表“卡”应包含引用乘客的外键。 PassengerId(在您的情况下为user_id)作为外键。不是反过来

所以您的更新声明会像更新卡集余额=值WHERE user_id =值;

© www.soinside.com 2019 - 2024. All rights reserved.