簡體   English   中英

將具有自動增量值的兩個不同表插入一個表

[英]Inserting into one table from two different tables with auto-increment value

我要從兩個不同的表插入一個表:

在我的driver表我需要得到driverID要插入我的car表的外鍵driverID_FK

同時,我需要將manufacturer表中的brandcolorwheel插入我的car表中。

我的桌子:

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

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

MANUFACTURER
(manufacturerID, brand, color, wheel)

我的driverID是一個自動增量值。 在我的Web應用程序中,可能要在我要插入到car表中的行之前或之后有其他條目,因此它不一定總是在driver表中最后插入的行。 我的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 = ?

使用INSERT .. SELECT語法:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM