我有一个 Car
带列的表 carID, brand, color, price
. 我在抄 carID
以及 color
去另一张table Detail
有列的 carID, finish, color
(与 carID
作为来自的外键 Car
table和table finish
列不可用 NULL
).
我有一个sql语句:
public void insertToDetail(int carID, String finish){
String sql = "INSERT INTO detail (carID, finish, color) SELECT ?, ?, color FROM car WHERE carID = ?;";
PreparedStatement psmt = connect.prepareStatement(sql);
psmt.setString(1, carID);
psmt.setInt(2, finish);
psmt.setInt(3, carID);
psmt.executeUpdate();
psmt.close();
}
我怎样才能确认一个完全相同的 carID
值尚未插入到我的 Detail
table?
我试过这样的方法:
"INSERT INTO detail (carID, finish, color)
SELECT ?, ?, color FROM car
WHERE NOT EXISTS {
SELECT carID
FROM detail
WHERE carID = ?
} ;";
它给了我一个错误:
mysqlsyntaxerror您的sql语法有错误;在第1行的“{select carid from detail where carid=123}”附近,检查与mysql服务器版本对应的手册,以获得正确的语法
2条答案
按热度按时间wh6knrhe1#
您的sql有语法错误,需要更改
{}
至()
并移除;
最后所以改变吧
到
kxxlusnw2#
您尝试编写的查询是:
然而,
NOT EXISTS
是错误的方法。让数据库进行检查。因此,请创建一个唯一索引:这将在表中生成重复的车辆ID。一
insert
如果生成重复项,将返回错误。要防止错误,请使用
ON DUPLICATE KEY UPDATE
: