千家信息网

MySQL中怎么查询数据并根据条件更新到另一张表

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章给大家介绍MySQL中怎么查询数据并根据条件更新到另一张表,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。数据案例原本的数据库有3张表。t_user :用户表,存放用户的基
千家信息网最后更新 2026年11月02日MySQL中怎么查询数据并根据条件更新到另一张表

这篇文章给大家介绍MySQL中怎么查询数据并根据条件更新到另一张表,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

数据案例

原本的数据库有3张表。

  • t_user :用户表,存放用户的基本信息。

  • t_role :角色表,存放角色信息。

  • t_role_user:存放角色与用户的对应关系。

因为业务逻辑的改变,现在要把它们合并为一张表,把t_role中的角色信息插入到t_user中。

首先获取到所有用户对应的角色,以用户ID分组,合并角色地到一行,以逗号分隔。

SELECT t_user.id,GROUP_CONCAT(t_role.content) FROM t_user LEFT JOIN t_role_user on t_user.id = t_role_user.t_user_id LEFT JOIN t_role ON t_role_user.t_role_id = t_role.id GROUP BY t_user.id

先把查到的数据存放到了一个新建的表mid里

INSERT into mid (t_user_id,t_role_info) SELECT t_user.id,GROUP_CONCAT(t_role.info) FROM t_user LEFT JOIN t_role_user on t_user.id = t_role_user.t_user_id LEFT JOIN t_role ON t_role_user.t_role_id = t_role.id GROUP BY t_user.id

然后将mid表的数据更新到t_user里,因为是更新,所以不能用insert into select from 语句了

update t_user,mid set t_user.t_role_info = mid.t_role_info where t_user.id = mid.t_user_id

成功将目的地以逗号分隔的字符串形式导入t_user表中

说一下用到的几个方法,group_concat

group_concat( [DISTINCT] 要连接的字段 [Order BY 排序字段 ASC/DESC] [Separator '分隔符'] ),该函数能够将相同的行组合起来

select * from goods; +------+------+ | id| price| +------+------+ |1 | 10| |1 | 20| |1 | 20| |2 | 20| |3 | 200 | |3 | 500 | +------+------+ 6 rows in set (0.00 sec)

以id分组,把price字段的值在同一行打印出来,逗号分隔(默认)

select id, group_concat(price) from goods group by id; +------+--------------------+ | id| group_concat(price) | +------+--------------------+ |1 | 10,20,20| |2 | 20 | |3 | 200,500| +------+--------------------+ 3 rows in set (0.00 sec)

以id分组,把price字段去重打印在一行,逗号分隔

select id,group_concat(distinct price) from goods group by id; +------+-----------------------------+ | id| group_concat(distinct price) | +------+-----------------------------+ |1 | 10,20| |2 | 20 | |3 | 200,500 | +------+-----------------------------+ 3 rows in set (0.00 sec)

以id分组,把price字段的值打印在一行,逗号分隔,按照price倒序排列

select id,group_concat(price order by price desc) from goods group by id; +------+---------------------------------------+ | id| group_concat(price order by price desc) | +------+---------------------------------------+ |1 | 20,20,10 | |2 | 20| |3 | 500,200| +------+---------------------------------------+ 3 rows in set (0.00 sec)

insert into select from 将查询到的记录插入到某个表中

INSERT INTO db1_name(field1,field2) SELECT field1,field2 FROM db2_name

要求目标db2必须存在,下面测试一下,有两个表,结构如下

select * from insert_one; +----+--------+-----+-----+ | id | name  | age | sex | +----+--------+-----+-----+ | 1 | 冰河001 | 25 |   | | 2 | 冰河002 | 26 |   | | 3 | 冰河003 | 28 |   | | 4 | 冰河004 | 30 |   | +----+--------+-----+-----+ 4 rows in set    select * from insert_sex; +----+-----+ | id | sex | +----+-----+ | 1 | 1  | | 2 | 2  | | 3 | 1  | | 4 | 2  | +----+-----+ 4 rows in set

从表2中查找性别数据,插入到表1中

into insert_one(sex) select sex from insert_sex; Query OK, 4 rows affected select * from insert_one; +----+--------+-----+-----+ | id | name  | age | sex | +----+--------+-----+-----+ | 1 | 田小斯 | 25 |   | | 2 | 刘大牛 | 26 |   | | 3 | 郑大锤 | 28 |   | | 4 | 胡二狗 | 30 |   | | 5 |    |   | 1  | | 6 |    |   | 2  | | 7 |    |   | 1  | | 8 |    |   | 2  | +----+--------+-----+-----+ 8 rows in set

结果很尴尬,我是想要更新这张表的sex字段,而不是插入新的数据,那么这个命令只适用于要把数据导入空表中,所以在上面的实际需要中,我建立了新表mid,利用update来中转并更新数据

UPDATE tb1,tb2 SET tb1.address=tb2.address WHERE tb1.name=tb2.name

根据条件匹配,把表1的数据替换为(更新为)表2的数据,表1和表2必须有关联才可以

update insert_one,insert_sex set insert_one.sex = insert_sex.sex where insert_one.id = insert_sex.id; Query OK, 4 rows affected select * from insert_one; +----+--------+-----+-----+ | id | name  | age | sex | +----+--------+-----+-----+ | 1 | 冰河001 | 25 | 1  | | 2 | 冰河002 | 26 | 2  | | 3 | 冰河003 | 28 | 1  | | 4 | 冰河004 | 30 | 2  | | 5 |    |   | 1  | | 6 |    |   | 2  | | 7 |    |   | 1  | | 8 |    |   | 2  | +----+--------+-----+-----+ 8 rows in set

成功将数据更新到insert_one表的sex字段中。

关于MySQL中怎么查询数据并根据条件更新到另一张表就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

数据 更新 冰河 字段 角色 用户 逗号 一行 分组 条件 查询 信息 成功 内容 更多 帮助 不错 相同 尴尬 两个 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 科技股互联网 互联网科技保险 易互联网科技有限公司 互联网科技公司怎么样 有马互联网科技 万易互联网科技有限公司 互联网金融科技创新 未来的互联网科技 上海喔噻互联网科技 美国互联网黑科技 团飞科技与伯堂互联网服务平台 银川新华互联网科技职业技术培训学校图片 顶级互联网科技成果有哪些 广州市恰铎互联网科技有限公司 爱医互联网络科技 烟台灵鸽互联网科技有限公司 国大互联网教育科技有限公司薪资 银川新华互联网科技学校是国营吗 河南商务圈互联网科技有限公司 优雇互联网科技有限公司 互联网科技公司 天津市摩尔互联网科技 金融科技还是互联网 智能科技公司是互联网公司吗 朗涯互联网科技 中盈科技互联网信息有限公司 武汉健翔互联网络科技有限公司 苏州铭阳互联网科技有限公司 河南住房之家互联网科技 中国科技和美国互联网
0