首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当一个请求中没有任何行影响update时,如何在MySQL上插入?

问当一个请求中没有任何行影响update时,如何在MySQL上插入?
EN

Stack Overflow用户
提问于 2021-11-23 12:11:41
回答 2查看 38关注 0票数 0

这是我的更新请求:

代码语言:javascript
复制
UPDATE my_table 
SET column_i_want_to_update = 'column value' 
WHERE id_which_is_not_primary_key_nor_unique = 'id value'

如果0行受此更新影响,我想运行我的insert请求:

代码语言:javascript
复制
INSERT INTO my_table (column_i_want_to_update, id_which_is_not_primary_key_nor_unique) 
VALUES ('column value', 'id value')

但我希望在一个请求而不是两个请求中执行该操作。我已经尝试过这个请求:

代码语言:javascript
复制
INSERT INTO my_table (id_which_is_not_primary_key_nor_unique, column_i_want_to_update) 
VALUES ('id value', 'column value') 
ON DUPLICATE KEY 
UPDATE column_i_want_to_update = column_i_want_to_update

但这不起作用,因为我的id既不是主键,也不是唯一的。有解决方案吗?提前谢谢。

EN

回答 2

Stack Overflow用户

发布于 2021-11-23 12:29:14

在两列上添加唯一索引。

代码语言:javascript
复制
ALTER TABLE `my_table` 
ADD UNIQUE `my_unique_index`
(id_which_is_not_primary_key_nor_unique, column_i_want_to_update);

现在ON DUPLICATE KEY UPDATE ...应该可以工作了。

票数 1
EN

Stack Overflow用户

发布于 2021-11-23 12:19:01

您可以使用and if表达式

代码语言:javascript
复制
IF(expression ,expr_true, expr_false);

因此,在表达式中使用

代码语言:javascript
复制
SELECT IF(( mysql_affected_rows(&mysql) >0 THEN 'true' ELSE 'false' 
END),'true','false');

或者类似的东西

代码语言:javascript
复制
IF condition THEN
   statements;
ELSE
   else-statements;
END IF;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70080691

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档