mysql:在一个查询中选择,插入,删除和更新
问题描述:
我需要在一个查询中使用select,insert,delete和update。mysql:在一个查询中选择,插入,删除和更新
(我需要从旧表中复制数据到新的,然后删除旧的,并更新另一个)。
插入,然后选择(复印功能我能,但现在我有问题)
我有这个疑问:
INSERT INTO news_n (id, data)
SELECT (id, data)
FROM news
WHERE id > 21
感谢
答
你不能做到这一切在一个查询,但你可以做到这一切在一个交易如果您正在使用事务性存储引擎(如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)
。
答
在一个查询中,我不认为它是可能的。
你可以尝试写一个存储过程,触发器使用你可能做到这一点
什么是错误?你不能使用同一个表来执行多个操作,即'SELECT'带'UPDATE'或'DELETE'。 – 2010-11-03 16:20:41