2017-08-27 15 views
0

MySQLテーブルの行のセットを同じテーブルにコピーしたいとします。私はすでに行をコピーし、1つの値を変更し、主キー(auto_increment)を更新するSQLクエリを持っています。しかし、私の質問は、行がない(別の条件で)、元の行の特定の列に対して同じ値を持つ場合にのみ、これを実行したいということです。例についてmysql:行をコピーして1つの値が1つの値の違いでない場合に変更する

{ID, USER_ID, VALUE_A, VALUE_B} 

コピーUSER_IDが「USER_A」でUSER_IDが「User_Bへ」とVALUE_Aが元の行からVALUE_Aでない行がありませんすべての行が、これらのコピーされた行のAUTO_INCREMENT IDと「User_Bへ」

+0

私たちはあなたにその方法を示すことができるようにクエリを追加してください。 '(IDが指定されていない= AUTO_INCREMENT); USER_ID = 'USER_A' が – Lamar

+0

'テーブルに挿入(USER_ID、value_a、value_b) セレクト 'User_Bへ'、value_a、テーブルからvalue_b –

答えて

0

にUSER_IDを設定するには、あなたが必要なものは既に存在していない行を選択します。これを達成する1つの方法は、結合が残っていて、一致しないレコードを取得することです。このようなもの:

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 
関連する問題