Join Update的MySQL语法

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

培养

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

目前,我试图创build一个查询,将增加列车上的容量,如果预订被取消。 我知道我必须执行一个Join,但我不知道如何在Update语句中执行此操作。 例如,我知道如何通过给定某个ReservationID来获得列车的容量,如下所示:

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

但是我想构build这样的查询 –

 Increment Train.Capacity by ReservationTable.NoSeats given a ReservationID 

如果可能的话,我也想知道如何增加任意数量的座位。 另外,我打算在Java事务中执行增量后删除保留。 删除是否会影响交易?

谢谢您的帮助!

MySQL支持多表UPDATE语法 ,它看起来大致如下所示:

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

您可以更新Train表并从相同交易中的Reservations表中删除。 只要你先进行更新,然后再进行删除,它应该工作。