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

问题描述:

我需要在一个查询中使用select,insert,delete和update。mysql:在一个查询中选择,插入,删除和更新

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

插入,然后选择(复印功能我能,但现在我有问题)

我有这个疑问:

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

感谢

+0

什么是错误?你不能使用同一个表来执行多个操作,即'SELECT'带'UPDATE'或'DELETE'。 – 2010-11-03 16:20:41

你不能做到这一切在一个查询,但你可以做到这一切在一个交易如果您正在使用事务性存储引擎(如InnoDB)。这可能是你想要的,但很难告诉你只使用你在问题中提供的信息。

START TRANSACTION; 

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

COMMIT; 

不能同时选择/更新/ etc到一个查询中。您必须针对您要完成的每项操作编写单独的查询。

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)

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

你可以尝试写一个存储过程,触发器使用你可能做到这一点