gpt4 book ai didi

sql - 连接更新的 MySQL 语法

转载 作者:IT老高 更新时间:2023-10-28 12:52:56 29 4
gpt4 key购买 nike

我有两张这样的表

火车

+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| TrainID | varchar(11) | NO | PRI | NULL | |
| Capacity | int(11) | NO | | 50 | |
+----------+-------------+------+-----+---------+-------+

预订

+---------------+-------------+------+-----+---------+----------------+
| 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 | |
+---------------+-------------+------+-----+---------+----------------+

目前,我正在尝试创建一个查询,如果取消预订,它将增加火车上的容量。我知道我必须执行 Join,但我不确定如何在 Update 语句中执行它。例如,我知道如何使用给定的 ReservationID 获取 Train 的容量,如下所示:

select Capacity 
from Train
Join Reservations on Train.TrainID = Reservations.Train
where ReservationID = "15";

但我想构建执行此操作的查询 -

Increment Train.Capacity by ReservationTable.NoSeats given a ReservationID

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

感谢您的帮助!

最佳答案

MySQL 支持 multi-table UPDATE syntax ,大概是这样的:

UPDATE Reservations r JOIN Train t ON (r.Train = t.TrainID)
SET t.Capacity = t.Capacity + r.NoSeats
WHERE r.ReservationID = ?;

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

关于sql - 连接更新的 MySQL 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2114534/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com