2012-02-29 206 views
1

UPDATE我使用MySQL的INSERT INTO...SELECT結構:INSERT INTO ... SELECT,並從SELECT

INSERT INTO some_table (col1, col2, col3) 
    SELECT otbl.col4, obtl.col5, atbl.col6 FROM other_table otbl 
    INNER JOIN another_table atbl 
     ON atbl.id = otbl.some_id 
    WHERE obtl.col7 = 0; 

在相同的查詢,我想col7 = 1 「的切換」 的任何地方SELECT匹配。可能?

+0

難道我理解你的權利,你希望你的語句_also_ UPDATE obtl.col7 1當你的INSERT INTO some_table發生什麼呢? – yhw42 2012-02-29 05:10:44

+0

@ yhw42,是的!究竟。並且INSERT必須在更新之前使用WHERE obt1.col7,顯然。 – Kyle 2012-02-29 05:17:43

+0

...嗯我在「兩個查詢+交易」陣營中使用Umbrella ...你能解釋一下爲什麼這對你不起作用嗎? – yhw42 2012-02-29 05:25:50

回答

3

我相信答案是沒有。我想做類似的事情,比如在選擇他們的細節時更新用戶的登錄時間。在你的情況下,你將不得不有兩個查詢,更新是次要的。如果您需要確保它們之間不發生任何事情,請考慮事務。

+0

+1,但是當表變大時,一個查詢總是優於兩個。你可能是對的。爲了以防萬一,我會留下這個問題。 – Kyle 2012-02-29 05:41:36

1

在other_table創建觸發器像

other_table

CREATE TRIGGER other_Trigger 
AFTER insert ON some_table 
FOR EACH ROW 
BEGIN 
update other_table set col7=1 where some.id=new.id 
END