我有一个- put: artifacts
params:
additional_tags: version/number
build: mycode
get_params: {skip_download: true}
表,其中有Car
列。我正在将carID, brand, color, price
和carID
复制到另一个具有列color
的表Detail
(其中carID, finish, color
是carID
表的外键, Car
列不是finish
)。
我有一条SQL预准备语句:
NULL
如何检查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
它给了我错误:
MySQLSyntaxError您的SQL语法有错误;检查 与您的MySQL服务器版本相对应的手册 在以下位置使用语法'{ 第1行
答案 0 :(得分:1)
您的SQL语法错误,需要将boolean isIn(char c, char[] word) {
return IntStream.range(0, word.length).anyMatch(i -> word[i] == c);
}
更改为
a = [
{'product_name':'coca-cola','qty':2},
{'product_name':'pepsi','qty':2},
{'product_name':'coca-cola','qty':1},
{'product_name':'coca-cola','qty':1},
{'product_name':'coca-cola1','qty':1},
{'product_name':'pepsi','qty':2}
]
totals = {}
for sale in a:
if sale['product_name'] in totals.keys():
totals[sale['product_name']] += sale['qty']
else:
totals[sale['product_name']] = sale['qty']
b = []
for product_name, qty in totals.items():
b.append({'product_name':product_name, 'qty':qty})
并在末尾删除{}
所以改变
()
到
;
答案 1 :(得分:1)
您要编写的查询是:
INSERT INTO detail (carID, finish, color)
SELECT ?, ?, color
FROM car
WHERE NOT EXISTS (SELECT carID
FROM detail
WHERE carID = ?
) ;
但是,NOT EXISTS
是错误的方法。让数据库进行检查。因此,创建一个唯一索引:
CREATE UNIQUE INDEX unq_detail_carid on detail(carID);
这将在表格中生成重复的汽车ID。如果产生重复,insert
将返回错误。
为防止错误,请使用ON DUPLICATE KEY UPDATE
:
INSERT INTO detail (carID, finish, color)
SELECT ?, ?, color
FROM car
ON DUPLICATE KEY UPDATE carID = VALUES(carID);