2010-11-03 155 views
3

我需要在一個查詢中使用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

回答

5

你不能做到這一切在一個查詢,但你可以做到這一切在一個交易如果您正在使用事務性存儲引擎(如InnoDB)。這可能是你想要的,但很難告訴你只使用你在問題中提供的信息。

START TRANSACTION; 

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

COMMIT; 
0

不能同時選擇/更新/ etc到一個查詢中。您必須針對您要完成的每項操作編寫單獨的查詢。

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)

1

在一個查詢中,我不認爲它是可能的。

你可以嘗試寫一個存儲過程,觸發器使用你可能做到這一點

相關問題