java—使用自动增量值从两个不同的表插入到一个表中

2nbm6dog  于 2021-06-18  发布在  Mysql
关注(0)|答案(2)|浏览(367)

我从两个不同的表插入一个表:
在我的 driver 我要去拿table driverID 插入我的 car 表作为外键 driverID_FK .
同时,我需要插入 brand , color ,和 wheel 从我的 manufacturer 我的table car table。
我的table:

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

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

MANUFACTURER
(manufacturerID, brand, color, wheel)

我的 driverID 是一个自动增量值。在我的web应用程序中,在我要插入的行之前或之后可能还有其他条目 car 所以它不一定总是我的表中最后插入的行 driver table。我的朋友也一样 brand, color, wheel 我的价值观 manufacturer table。
以下是我目前准备的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();

任何建议都非常感谢

x7rlezfr

x7rlezfr1#

查询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 = ?
azpvetkf

azpvetkf2#

使用插入。。选择语法:

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

相关问题