mysql:copy row&更改一个值,如果不存在,则存在一个值差异

时间:2017-08-27 20:28:14

标签: mysql sql

我想将MySQL表中的一组行复制到同一个表中。我已经有sql查询来复制行,更改一个值并更新主键(auto_increment)。但我的问题是,我只想在没有行(有另一个条件)的情况下执行此操作,该行对于原始行的某个列具有相同的值。

例如:

{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”

1 个答案:

答案 0 :(得分: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