mysql:在一个查询中选择,插入,删除和更新

时间:2010-11-03 16:17:09

标签: mysql

我需要在一个查询中使用select,insert,delete和update。

(我需要将旧表中的数据复制到new,然后删除旧的,然后更新另一个)。

插入并选择(复制功能我能够,但现在我有问题)

我有这个问题:

INSERT INTO news_n (id, data)
    SELECT (id, data)
    FROM news
    WHERE id > 21

由于

4 个答案:

答案 0 :(得分:6)

您无法在一个 查询 中完成所有操作,但您可以在一个 交易中完成所有操作 >如果您使用的是事务存储引擎(如InnoDB)。这可能是您想要的,但很难说只使用您在问题中提供的信息。

START TRANSACTION;

INSERT...;
DELETE...
UPDATE...;

COMMIT;

答案 1 :(得分:1)

MySQL不支持MERGE,因此您必须在两个查询中执行此操作:

INSERT
INTO    news_n (id, data)
SELECT  id, data
FROM    news
WHERE   id > 21
ON DUPLICATE KEY UPDATE
SET     data = news.data

DELETE
FROM    news_n
WHERE   id NOT IN
        (
        SELECT  id
        FROM    news
        WHERE   id > 21
        )

,前提是您在两个表中都有PRIMARY KEY (id)

答案 2 :(得分:1)

在一个查询中,我认为不可能。

您可以尝试编写存储过程并使用触发器来实现

答案 3 :(得分:0)

您无法将Select / Update / etc组合到一个查询中。您必须为要完成的每个操作编写单独的查询。