java - 从两个不同的表插入一个表并具有自动增量值

标签 java mysql sql select insert

我正在从两个不同的表插入到一个表中:

在我的 driver 表中,我需要将 driverID 作为外键插入到我的 car 表中 driverID_FK.

同时,我需要从我的 manufacturer 表中插入 brandcolorwheel进入我的 car 表。

我的 table :

DRIVER
(driverID, name, age, ...)

CAR
(carID, driverID_FK, brand, color, wheel)

MANUFACTURER
(manufacturerID, brand, color, wheel)

我的driverID是一个自动增量值。在我的 Web 应用程序中,我想要插入到 car 表中的行之前或之后可能还有其他条目,因此它并不总是我的 driver 中最后插入的行 table 。我的manufacturer 表中的brand、color、wheel 值也是如此。

这是到目前为止我准备好的 SQL:

String name = //taken from another method...
int manufacturerID = //taken from another method...

String sql = "INSERT INTO car (driverID_FK, brand, color, wheel) 
+ SELECT driverID FROM driver WHERE name = ?,
+ SELECT brand, color, wheel FROM manufacturer WHERE manufacturerID = ? ;";

PreparedStatement psmt = connect.prepareStatement(sql);
psmt.setString(1, name);
psmt.setInt(2, manufacturerID);
psmt.executeUpdate();
psmt.close();

非常感谢任何建议

最佳答案

查询1:获取驱动程序ID:

SELECT driverID INTO @driverID
FROM driver
WHERE name = ?

插入制造商信息以及之前的@driverID:

INSERT INTO car (driverID, brand, color, wheel)
SELECT @driverID, brand, color, wheel
FROM manufacturer
WHERE manufacturerID = ?

关于java - 从两个不同的表插入一个表并具有自动增量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53604632/

相关文章:

java - 对服务器套接字客户端使用 Executor 而不是新线程

java - 将 int[] 转换为 char[] 无法正常工作

java - 如果某个线程使对象为 null 而另一个线程在该对象的方法内部,会发生什么

php - SQL 查询 : Where, Like, OR - 结合这些

java - 无法让 Jasper Reports 工作 - 出现 java.lang.NoClassDefFoundError : net/sf/jasperreports/engine/JasperCompileManager

mysql - 对于使用 utf-8 编码的数据库,char 还是 varchar 更好?

mysql - SQL查询以查找剩余叶子数量最多的讲师

mysql - 带有 INSERT as then 子句的 if 语句 (MYSQL)

SQL Server : difference in days for two dates in separate rows

java - 与 postgreSQL 数据库连接的非法 UTF-8 序列