2017-08-27 32 views
0

我想從MySQL表中複製一組行到同一個表中。我已經有sql查詢來複制行,更改一個值並更新主鍵(auto_increment)。但我的問題是,我只想在沒有行(與另一個條件)的情況下執行此操作,它對於原始行的某一列具有相同的值。mysql:複製行並更改一個值,如果不存在一個值差異

例如:

{ID, USER_ID, VALUE_A, VALUE_B} 

複製所有行USER_ID是「USER_A」並沒有排在那裏USER_ID是「USER_B」和VALUE_A是VALUE_A從原始行;在這些複製的行中添加auto_increment ID並將USER_ID設置爲「USER_B」

+0

請添加您的查詢,以便我們可以告訴你如何做到這一點。 – Lamar

+0

'insert into table(user_id,value_a,value_b) 從表中選擇'USER_B',value_a,value_b其中user_id ='USER_A';'(ID未指定= auto_increment) –

回答

0

因此,您需要的是選擇尚不存在的行。實現這一點的一種方式是左連接並檢索沒有匹配的記錄。像這樣的東西:

insert int table (user_id, value_a, value_b) 
select * from (
    select t1.user_id, t1.value_a, t1.value_b 
    from table t1 
    left join table t2 on t1.user_id = t2.user_id 
    and t1.value_a = t2.value_a 
    and t1.value_b = t2.value_b 
    where t2.value_a is null and t2.value_b is null 
) as t 
相關問題