mysql未更新行,mysql – upsert后删除未更新的行

我有一个表包含3行像:

P_K, Group, Name, Age:

1, 1, Alice, 35

2, 1, Bob, 40

3, 2, Eva, 19

4, 2, Carl, 20

我希望(如果可能的话)使用1个MySQL查询来更新Alice的年龄并删除Bob.

我的第一种方法是在组1上执行删除查询,然后插入我想要的行. (1,Alice,36)

后来我找到了另一种方法,即添加一个带有时间戳或数字的额外列,并在upsert更新此列期间.然后删除不是最新编号的行.

我还能做些什么吗?这不要求额外的列或2个查询?

解决方法:

也许你可以通过创建一个程序来做到这一点……

CREATE PROCEDURE example

BEGIN

UPDATE table SET table.something=1 WHERE table.something=x;

DELETE FROM table WHERE table.something=Y;

END;

EXECUTE example;

我不知道它是否会起作用,只是尝试

另一个解决方案,因为你不知道“Y”的值(如上面的代码所示)

带参数的程序

CREATE PROCEDURE example @Y //varchar(20)

BEGIN

UPDATE table SET table.something=1 WHERE table.something=x;

DELETE FROM table WHERE table.something=y;

END;

EXECUTE example @Y='value';

标签:mysql,sql

来源: https://codeday.me/bug/20190708/1407076.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值