我有两个表,看起来像这样
火车
+----------+-------------+------+-----+---------+-------+
| 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 | |
+---------------+-------------+------+-----+---------+----------------+
目前,我正在尝试创建一个查询,如果预订被取消,该查询将增加列车上的容量。我知道我必须执行连接,但我不确定如何在Update语句中执行连接。例如,我知道如何在给定某个ReservationID的情况下获得列车的容量,如下所示:
select Capacity
from Train
Join Reservations on Train.TrainID = Reservations.Train
where ReservationID = "15";
但是我想构造一个查询来完成这个任务-
Increment Train.Capacity by ReservationTable.NoSeats given a ReservationID
如果可能的话,我还想知道如何增加任意数量的座位。顺便说一句,我计划在Java事务中执行增量后删除保留。删除操作会影响事务吗?
谢谢你的帮助!
发布于 2010-01-22 10:31:59
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
表中删除。只要你先做更新,然后再做删除,它应该可以工作。
发布于 2019-07-19 20:10:29
下面是UPDATE语句的另一个示例,该语句包含用于确定要更新的值的联接。在本例中,如果payee_id为零(未分配),我希望使用相关帐户付款id更新transactions.payee_id。
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
https://stackoverflow.com/questions/2114534
复制相似问题