社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  DATABASE

mysql:如果值存在,则更新行,如果值不存在,则插入[重复]

codeCat • 5 年前 • 1443 次点击  

这个问题已经有了答案:

我需要一个SQL语句,如果行存在,它将更新,如果行不存在,则插入。 我有一张表,上面有下列值…

ID为(唯一+自动递增)

id | selectedID | userID  | question
------------------------------------
1  |    1       |   3     |   10

如果用户id为3的用户选择了不同的selectedid,例如问题10中的2,我希望表更新为:

id | selectedID | userID  | question
-----------------------------------
1  |    2       |   3     |   10

如果用户id为3的用户再次为问题10选择selectedid 2,我不希望插入另一行。

如果id为3的用户为问题11选择了selectedid,我希望它插入一个新行,例如问题11的第2行:

id | selectedID | userID  | question
-----------------------------------
1  |    2       |   3     |   10
2  |    2       |   3     |   11
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/44014
 
1443 次点击  
文章 [ 2 ]  |  最新文章 5 年前
sandesh dahake
Reply   •   1 楼
sandesh dahake    6 年前

INSERT on duplicate key

你可以在MySQL中使用上面的构造,如果存在键,如果没有找到主键,就可以更新记录。在甲骨文中有点合并。

如果在insert中指定了on duplicate key update选项 语句和新行在unique或 主键索引,mysql根据 新的价值观。

Gordon Linoff
Reply   •   2 楼
Gordon Linoff    6 年前

你在找 insert on duplicate key update .

基本上,你想要组合 (userId, questionId) 独一无二。首先设置唯一约束/索引:

create unique index unq_t_userId_questionId on t(userId, questionId);

然后使用 on duplicate key update 插入内容:

insert into t (userId, questionId, selectedId)
    values (@userId, @questionId, @selectedId)
    on duplicate key update selectedId = values(selectedId);