【问题标题】:batch insert /update at the same time同时批量插入/更新
【发布时间】:2012-08-25 10:42:07
【问题描述】:
  1. 假设在数据库中我有大约 1000 条用户、他的朋友、timeStampOfChat 记录(即这是列)
  2. 现在对于用户(假设 subrata),我们有 30 个朋友的姓名及其时间戳值。 [所以还有970条其他用户及其好友的记录。]
  3. 现在我想更新一个新的数据集,其中用户 subrata 有 50 条记录,其中很少是新的,很少是旧的。 (对于新的它应该插入整个,对于旧的它应该更新时间戳。)
  4. 我想使用批量更新/插入。

这就是我想写的逻辑

if data base has user subrata then batch update time stamp where user = subrata

我将更新现有记录,但如何从那 50 条记录中插入新记录。

【问题讨论】:

  • 这是怎么回事?您正在编程或打算用什么语言编程?请通过添加适当的标签或标签来澄清这一点。之后,请更新您的问题:示例数据(如果适用)、预期结果(如果适用)、您目前拥有的代码、您尝试解决问题的方法、您遇到的特别困难在你的尝试中。
  • 请注意,批处理标签是“用于 Windows 批处理文件问题”。不要仅仅因为您的问题的任何部分都有“批处理”字样就使用它...
  • 听起来你想看看 MySQL 中的 REPLACE INTO 语法。
  • 查看 MERGE 语句是否受您的 DBMS 支持。

标签: sql


【解决方案1】:

您尚未使用 RDBMS 标记此问题,但在 MySQL 中执行此操作的正确方法是 INSERT INTO...ON DUPLICATE KEY UPDATE 查询。

只要你定义了合适的索引,当表中已经包含你要插入的行时,它会更新时间而不是插入副本。

INSERT INTO table (user, hisfriend, timeStampOfChat) VALUES (1, 2, 3) 
    ON DUPLICATE KEY UPDATE timeStampOfChat = VALUES(timeStampOfChat)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-16
    • 1970-01-01
    • 1970-01-01
    • 2016-05-02
    • 2014-06-22
    • 2014-01-16
    • 2011-09-11
    • 2023-03-14
    相关资源
    最近更新 更多