首页 > 解决方案 > 插入一行的 SQL 命令 - 但是当 current_timestamp() 存在时,更新它

问题描述

我有这样的 SQL 表

| id (int) | price (float) | date (current_timestamp)|
|----------|---------------|-------------------------| 
| 1        | 5.50          | 2021-09-04              |
| 2        | 20.49         | 2021-09-05              |

我需要有关更新行的 SQL 命令的帮助, WHERE date = CURDATE()但前提是存在带有今天时间戳的行。如果没有,则插入。如何?

标签: mysqlsql

解决方案


您可以使用on duplicate key update. . . 假设您对 id 有唯一索引或约束。

insert into t (id, price, date)
    values (?, ?, ?)
    on duplicate key update date = values(date);

如果id不是主键或声明的唯一键,则可以添加约束:

alter table t add constraint unq_t_id unique (id);

推荐阅读