mysql 在重复的 FIELD 而不是 KEY 上插入

标签 mysql insert duplicates field

-------------------------------------
| user_id | user_name | user_visits |
-------------------------------------
| 1       | foo       | 5           |
-------------------------------------
| 2       | bar       | 12          |
-------------------------------------

user_id:自动递增,user_visits:默认1

INSERT INTO table (user_name) VALUES ('baz'), ('bar'), ('qux');

上面的语句当然会插入3条新记录,结果:

-------------------------------------
| user_id | user_name | user_visits |
-------------------------------------
| 1       | foo       | 5           |
-------------------------------------
| 2       | bar       | 12          |
-------------------------------------
| 3       | baz       | 1           |
-------------------------------------
| 4       | bar       | 1           |
-------------------------------------
| 5       | qux       | 1           |
-------------------------------------

但我想要实现的是:

-------------------------------------
| user_id | user_name | user_visits |
-------------------------------------
| 1       | foo       | 5           |
-------------------------------------
| 2       | bar       | 13          |
-------------------------------------
| 3       | baz       | 1           |
-------------------------------------
| 4       | qux       | 1           |
-------------------------------------

从字面上看,

如果字段 user_name 存在,则更新 user_visits,否则插入一条新记录。

是否可以通过单个插入语句实现此目的?

最佳答案

当然有,但它与您的 insert 语句无关。您需要在 user_name 列上添加唯一索引:

create unique index user_name_idx on yourtable (user_name);

然后在跟踪计数的代码中必须决定是进行插入还是更新。

关于mysql 在重复的 FIELD 而不是 KEY 上插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5786407/

相关文章:

python - 使用 python 和 VueJS 优化 5MB 查询结果的显示

图表的 MySQL 查询

Php - 尝试将 URL 插入 MySQL 表

python-2.7 - 保留一些数据不重复并添加到现有的 python 数据框中

php - 将多维数组拆分为单个数组 :PHP

php - 警告 : mysql_real_escape_string() expects parameter 1 to be string, 资源中给出

algorithm - 在排序和旋转列表中插入一个元素

mysql - 插入+选择: Inserting X entries depending on an IN result

python-3.x - 具有包含重复项的元组的 Python3 排列

sql - 如何选择具有重复字段值的每一行