mysql - 使用 ON DUPLICATE KEY 和 2 个唯一列

标签 mysql sql

我有 2 列日期(主要)和user_id(唯一)。我想检查该行是否存在(如果不创建的话),如果存在则更新当天的行。

例如:如果用户每天多次更新数据库,我只希望每天创建 1 条记录,并且该记录在用户每次更新数据库时更新。但是,如果同一用户(相同的 user_id)第二天更新数据库,我希望创建一条新记录。

我使用以下代码:

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

问题是它似乎没有同时检查dateuser_id,而只检查user_id。我怎样才能让它检查两者?谢谢。

最佳答案

我认为您想要表上有一个唯一索引。删除当前索引并定义:

create unique index idx_table_user_date on table(user, date)

这应该为您提供所需的行为 - 表中存在多个用户和多个日期,但没有用户两次具有相同的日期(或者日期具有相同的用户两次)。

关于mysql - 使用 ON DUPLICATE KEY 和 2 个唯一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29237878/

相关文章:

sql - 搜索条件中

php - 如何取消两个图像的链接?

c++ - QMYSQL驱动加载错误

SQL 在数字字段中搜索非整数

sql - 将 ISNUMERIC() 与 sql_variant SQL Server 一起使用

php - 我如何有效地找到不与日期间隔重叠的所有记录?

java.sql.SQLSyntaxErrorException : unexpected token: (

PHP表单验证提交问题?

mysql - UNION 两个有序的 MySQL 语句

MySQL批处理和连接: is it possible using SQL file injection?