当前位置: 首页 > 面试题库 >

连接更新的MySQL语法

皮自明
2023-03-14
问题内容

我有两个看起来像这样的桌子

培养

+----------+-------------+------+-----+---------+-------+
| 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来获取火车的容量,如下所示:

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支持多表UPDATE语法,大致类似于:

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

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



 类似资料:
  • 我需要将priorityId设置为以下。有人能建议一个sql更新语句吗?我想我需要一个由Rid和Gid组成的组或自加入 非常感谢。

  • 问题内容: 我有一张有此数据的表格 我正在尝试通过以下语句来更新行,因此描述列为“苹果的描述”和“橙的描述”,但它不起作用。 连接字符串的正确语法是什么? 问题答案: SQLite的字符串连接运算符是“ ”,不是“ ”

  • 我试图在我的SQL中用一个内部连接来做一个UPDATE语句。我已经做了示例,并将表名和表列编辑到我的表中。但我的MYSQL仍然不断给我一个错误(#1064)。 错误 您的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,在第5行的“来自收藏夹INNER JOIN图像ONfavorites.image=images.idW”附近使用正确的语法 SQL 提前感谢您在这一点上帮助我。 谨致问

  • 问题内容: 我只是尝试在我的应用程序中使用更新,但我不能。在控制台上,此mysql命令有效,但在此无效。 好吧,我在程序中使用了它: 只是提醒一下,codlocal是另一个名为Localidade的表的外键。我看到了一些有关加入的示例,但是我无法想象这对我如何起作用。 我得到这个: 那么,我该怎么办? 问题答案: 您必须使用pstmt.executeUpdate(); 代替pstmt.execut

  • 问题内容: 我不知道是什么问题。使用MySQL 5.0尝试运行以下MYSQL更新语句时出现编译错误 所有字段名称都是正确的。有什么想法吗? 问题答案: 尝试这个: 更新: 既然您说查询产生了语法错误,所以我创建了一些可以对其进行测试的表,并确认查询中没有语法错误: 看到?没有语法错误。我针对MySQL 5.5.8进行了测试。

  • 问题内容: 我想在具有多个联接的语句中更新表。虽然我知道联接的顺序并不重要(除非您使用的是优化程序提示),但我还是以某种最直观的方式对它们进行了排序。但是,这导致我要更新的表不是我开始使用的表,并且我无法更新它。 我想做的一个虚拟例子是: 这里有许多关于使用联接进行更新的帖子,但是它们总是首先更新表。我知道这在SQL Server中是可能的,希望在MySQL中也可能! 问题答案: MySQL中的多