我需要在一個查詢中使用select,insert,delete和update。mysql:在一個查詢中選擇,插入,刪除和更新
(我需要從舊錶中複製數據到新的,然後刪除舊的,並更新另一個)。
插入,然後選擇(複印功能我能,但現在我有問題)
我有這個疑問:
INSERT INTO news_n (id, data)
SELECT (id, data)
FROM news
WHERE id > 21
感謝
我需要在一個查詢中使用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