我有一个包含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个查询?
答案 0 :(得分:1)
可以通过创建程序来实现......
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 <datatype> //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';