我想将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”
答案 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