mysql 根据关联查询结果 修改 或者 添加 数据
来源:互联网 发布:网络电影市场 编辑:程序博客网 时间:2024/05/21 09:44
在工作中遇到了一个这样的问题,:更新一个表中的数据, 但是这个表的数据 是根据 多个表 才能查到, 即通过 select 查询出结果后,在通过查询出的结果 修改 或者添加 数据:
1 基础数据:
1.1z_user 用户表:
DLL语句
CREATE TABLE `z_user` ( `user_id` int(23) NOT NULL AUTO_INCREMENT, `book_id` int(23) DEFAULT NULL COMMENT '书籍ID', `game_id` int(23) DEFAULT NULL COMMENT '游戏ID', `name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '姓名', PRIMARY KEY (`user_id`)) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;表内容:
1.2 z_book 书籍表:
DLL语句:
CREATE TABLE `z_book` ( `book_id` int(23) NOT NULL AUTO_INCREMENT COMMENT '书ID', `book_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '书名', PRIMARY KEY (`book_id`)) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;表内容:
1.3 z_game 游戏表:
DLL语句:
CREATE TABLE `z_game` ( `game_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '游戏ID', `game_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '游戏名称', PRIMARY KEY (`game_id`)) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;表内容:
1.4 z_test 需要插入或者修改的表:
DLL语句:
CREATE TABLE `z_test` ( `user_id` int(23) NOT NULL, `user_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `book_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `game_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, PRIMARY KEY (`user_id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
2 根据user_id插入语句:
INSERT INTO z_test ( user_id, user_name, book_name, game_name)select u.user_id,u.name as user_name,b.book_name,g.game_name from z_user u LEFT JOIN z_book b ON u.book_id = b.book_id LEFT JOIN z_game g ON u.game_id = g.game_id where u.user_id = 1
结果如下:
3 根据ID查询出相关信息后在修改:
将 z_user,z_book,z_game 表中 的name属性名称加上"11"以作区别:
update 语句如下:
UPDATE z_test t,z_user u,z_book b,z_game g SETt.user_name = u.name,t.book_name = b.book_name,t.game_name = g.game_nameWHERE 1=1and t.user_id = u.user_idand b.book_id = u.book_idand g.game_id = u.game_idand u.user_id = 1
结果如下:
修改成功!
总结:虽然这个是mysql的基础修改数据,但是还有很多细节需要注意,比如,insert的语句中查询出的字段一定要和需要插入的字段保持一致,不一致的话就使用"as" 用别名使之保持一致,否之无法插入; 在修改的时候,可能会出现 执行成功但是就是没有变化的情况,这时就要仔细看一下,你的条件是否正确, 我遇到的是: 已知user_id 那么 z_user表中 该id下的属性都是知道的, 必须使用 b.book_id = u.book_id 和 g.game_id = u.game_id 才能正确插入的情况, 虽然 用 "="号连接两边都会是相同的,自我感觉右边还得放已知条件才行,我也整的很懵逼,不知为何!
阅读全文
3 0
- mysql 根据关联查询结果 修改 或者 添加 数据
- 根据字段关联批量修改关联数据
- mysql多表关联查询进行数据修改
- mysql查询结果添加序列号
- mysql查询结果添加序列号
- mysql查询结果添加序列号
- mysql查询结果添加序列号
- mysql查询结果添加序列号
- mysql数据库批量修改表的字段值根据关联表数据修改
- mysql根据查询结果创建表
- mysql根据select查询结果 循环更改
- mysql根据查询插入数据
- mysql 关联查询 修改 ssm mabits
- 给mysql查询结果添加序号
- MySql为查询结果添加前、后缀
- mysql简单实现查询结果添加序列号
- mysql关联查询怎么在查询软件中一下就能查询到所有的关联数据,修改的时候也方便,对比数据
- 根据一个表关联另外一个表进行数据修改
- Camera-Radar Fusion
- 关于IIS的Error503错误
- LeetCode Game With Sticks
- Android 集成Tinker的Gradle配置文件
- Spring的事务处理
- mysql 根据关联查询结果 修改 或者 添加 数据
- 初学数组并使用数组编写九九乘法表
- NAPT和NATD
- MyLayout和XIB或SB的混合使用方法
- IP地址 网段的划分
- matlab的使用问题(—):每次双击.m文件都会自动打开一个matlab程序
- JavaScript HTML DOM(二)
- 使用gdb调试多线程与多进程
- 自然语言处理基础(3)--自底向上的句法分析