mysql 查询一个表的数据,并修改部分数据,再插回原来的表中,复制某个用户的数据给另一个用户
一、需求
我有一表日记的表,表中盛放着所有用户的日记数据。
在做演示项目的时候,我需要将一个用户的数据复制给另一个用户。
我的表是这样的
也就是说需要:
- 查询出指定条件的日记内容
- 将查询出的内容修改用户ID uid
- 再插回原来的表中
二、解决办法
由于 id 是主键,需要在查询的时候去除它。
然后在 select 那里直接将 uid 对应的位置变成常量 10
,将查询到的数据都复制给 10
号用户。
这里我只复制了一条作为测试,下面的 where 部分根据需要进行筛选就可以了。
insert into diaries(date, title, content, temperature, temperature_outside, weather, category, date_create, date_modify, uid, is_public)
select date, title, content, temperature, temperature_outside, weather, category, date_create, date_modify, '10', is_public
from diaries
WHERE id = 1
比如我的真实情况是这样的,我需要过滤掉一些包含关键字的数据
insert into diaries(date, title, content, temperature, temperature_outside, weather, category, date_create, date_modify, uid, is_public)
select date, title, content, temperature, temperature_outside, weather, category, date_create, date_modify, 10, is_public
from diaries
WHERE
title not like "%¥%"
AND title not like "%爷爷%"
AND title not like "%父亲%"
AND title not like "%爸%"
AND title not like "%妈%"
AND title not like "%工资%"
AND title not like "%她%"
AND title not like "%薪%"
AND title not like "%火币%"
AND content not like "%¥%"
AND content not like "%爷爷%"
AND content not like "%父亲%"
AND content not like "%爸%"
AND content not like "%妈%"
AND content not like "%工资%"
AND content not like "%她%"
AND content not like "%薪%"
AND content not like "%火币%"
and category != 'memo'
and uid = '3'
三、结果
结果是可行的。