如果数据存在则更新,否则插入,MySQL使用子查询或其他方法。

40 浏览
0 Comments

如果数据存在则更新,否则插入,MySQL使用子查询或其他方法。

这个问题已经有了答案

如果存在则插入到MySQL表中,否则更新

  • \'process\'是一种准备好的语句的方法
  • \'QId\'和\'UnqId\'是子外键(只是索引)

我想通过子查询等方式使它成为 一个SQL语句(包括三个查询) 的一行

$get = $call->process("SELECT UnqId FROM table1
                     WHERE QId = ? AND UnqId = ?", 
                     array($_SESSION['Q'], $_SESSION['U']));
if($get) //if table exists
{
$call->process("UPDATE table1 SET col3 = ?, col4 = UTC_TIMESTAMP() 
              WHERE QId = ? AND UnqId = ?", 
                  array('OK', $_SESSION['Q'], $_SESSION['U']));
}
else
{
$call->process("INSERT INTO table1 VALUES (?, ?, ?, UTC_TIMESTAMP(),
               NULL, NULL, NULL, NULL)", 
                  array($_SESSION['Q'], $_SESSION['U'], 'OK'));
}

admin 更改状态以发布 2023年5月25日
0
0 Comments

查看 ON DUPLICATE KEY UPDATE 语法可在一次查询中完成此操作。下次尝试搜索,例如 "mysql update on duplicate"。

0
0 Comments

您可以使用一条包含 ON DUPLICATE KEY UPDATE 的查询语句

INSERT INTO table (a,b,c) VALUES (1,2,3)
  ON DUPLICATE KEY UPDATE c=c+1;

0