upsert后删除未更新的行

时间:2013-12-04 10:57:21

标签: mysql sql

我有一个包含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个查询?

1 个答案:

答案 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';