我正在使用node.js mysql包,我可以在其中创建连接,在connection.query(..)..之后,关闭连接。
我有一组要在mysql数据库中更新的行,而且我不知道行是否存在。在这里,我有两个解决方案,但我不知道哪个更好:
删除我要在mysql数据库中更新的所有行,并使用一个connection.query(..)..
插入所有行。sudo代码:1。从表中删除id = .. [], 2.插入表格集......
检查我要更新/插入的每一行,如果id存在于mysql数据库中,则发送查询进行更新,否则插入。
sudo代码:1。列表中的每一行 2.检查mysql中是否存在该行 3.如果存在,则发送查询更新; 如果不存在,则发送查询以插入
对于第二个解决方案,我担心这可能太耗时。有谁有一些建议?做这个的最好方式是什么? 我对这些东西不熟悉所以我不知道在for循环中发送多个查询是否更好,特别是在节点中每个connection.query都是一个带回调的函数。哪一个会有更好的整体性能?或任何其他解决方案?
答案 0 :(得分:0)
使用insert ... on duplicate key update
示例:
insert into `tableName` (col1, col2, col3) values ( 'v1', 'v2', 'v3') on dupicate key update `col3`='v3'
*如果此案例中的密钥是auto_increment计数器,则此功能无效。
来源:http://dev.mysql.com/doc/refman/5.7/en/insert-on-duplicate.html