首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >连接更新的MySQL语法

连接更新的MySQL语法
EN

Stack Overflow用户
提问于 2010-01-22 10:19:15
回答 2查看 97.7K关注 0票数 106

我有两个表,看起来像这样

火车

代码语言:javascript
复制
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| TrainID  | varchar(11) | NO   | PRI | NULL    |       |
| Capacity | int(11)     | NO   |     | 50      |       |
+----------+-------------+------+-----+---------+-------+

预约

代码语言:javascript
复制
+---------------+-------------+------+-----+---------+----------------+
| Field         | Type        | Null | Key | Default | Extra          |
+---------------+-------------+------+-----+---------+----------------+
| ReservationID | int(11)     | NO   | PRI | NULL    | auto_increment |
| FirstName     | varchar(30) | NO   |     | NULL    |                |
| LastName      | varchar(30) | NO   |     | NULL    |                |
| DDate         | date        | NO   |     | NULL    |                |
| NoSeats       | int(2)      | NO   |     | NULL    |                |
| Route         | varchar(11) | NO   |     | NULL    |                |
| Train         | varchar(11) | NO   |     | NULL    |                |
+---------------+-------------+------+-----+---------+----------------+

目前,我正在尝试创建一个查询,如果预订被取消,该查询将增加列车上的容量。我知道我必须执行连接,但我不确定如何在Update语句中执行连接。例如,我知道如何在给定某个ReservationID的情况下获得列车的容量,如下所示:

代码语言:javascript
复制
select Capacity 
  from Train 
  Join Reservations on Train.TrainID = Reservations.Train 
 where ReservationID = "15";

但是我想构造一个查询来完成这个任务-

代码语言:javascript
复制
Increment Train.Capacity by ReservationTable.NoSeats given a ReservationID

如果可能的话,我还想知道如何增加任意数量的座位。顺便说一句,我计划在Java事务中执行增量后删除保留。删除操作会影响事务吗?

谢谢你的帮助!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-01-22 10:31:59

MySQL支持multi-table UPDATE syntax,如下所示:

代码语言:javascript
复制
UPDATE Reservations r JOIN Train t ON (r.Train = t.TrainID)
SET t.Capacity = t.Capacity + r.NoSeats
WHERE r.ReservationID = ?;

您可以在同一事务中更新Train表和从Reservations表中删除。只要你先做更新,然后再做删除,它应该可以工作。

票数 195
EN

Stack Overflow用户

发布于 2019-07-19 20:10:29

下面是UPDATE语句的另一个示例,该语句包含用于确定要更新的值的联接。在本例中,如果payee_id为零(未分配),我希望使用相关帐户付款id更新transactions.payee_id。

代码语言:javascript
复制
UPDATE transactions t
  JOIN account a ON a.id = t.account_id
  JOIN account ap ON ap.id = a.pmt_act_id
  SET  t.payee_id = a.pmt_act_id
 WHERE t.payee_id = 0
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2114534

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档