一、在同一个表中冗余存储记录之间的关系(组织机构树),查询时需要根据冗余字段进行关联查询

例如,下面的示例,用户表中有个字段friend标记其朋友关系,要求找出id=2及他的朋友(父节点)

mysql> select * from user;
+----+-------+--------+
| id | name | friend |
+----+-------+--------+
| 1 | duan | 0 |
| 2 | liang | 1 |
| 3 | hou | NULL |
+----+-------+--------+
3 rows in set (0.00 sec) mysql>

sql:用or或union

mysql> SELECT * FROM USER u WHERE u.id=2 OR u.id=(SELECT friend FROM USER WHERE id=2);
+----+-------+--------+
| id | name | friend |
+----+-------+--------+
| 1 | duan | 0 |
| 2 | liang | 1 |
+----+-------+--------+
2 rows in set (0.00 sec) mysql> select * from user t where id=2 union select * from user where id in(select friend from user where id=2);
+----+-------+--------+
| id | name | friend |
+----+-------+--------+
| 2 | liang | 1 |
| 1 | duan | 0 |
+----+-------+--------+
2 rows in set (0.00 sec) mysql>

二、根据另一个表条件,更新本表

2、用户表和设备表

mysql> select * from user1;
+----+-------+--------+---------+
| id | name | device | company |
+----+-------+--------+---------+
| 1 | duan | NULL | c1 |
| 2 | liang | NULL | c2 |
| 3 | hou | NULL | c3 |
+----+-------+--------+---------+
3 rows in set (0.00 sec) mysql> select * from device;
+------+---------+---------+
| d_id | d_name | company |
+------+---------+---------+
| 11 | shebei1 | c1 |
| 12 | shebei2 | c2 |
| 13 | shebei3 | c3 |
+------+---------+---------+
3 rows in set (0.00 sec) mysql>

将拥有相同的公司的设备id填入到用户表中

方法:

  1. 关联
  2. set select from(同一个表内不行报错You can't specify target table 'user2' for update in FROM clause,SQL SERVER 可以)见《mysql update一张表不能直接使用set select from的结果
mysql> UPDATE user1 u SET device=(SELECT d_id FROM device d WHERE u.company=d.company);
Query OK, 3 rows affected (0.01 sec)
Rows matched: 3 Changed: 3 Warnings: 0 mysql> UPDATE user1,device SET user1.device=device.d_id WHERE user1.company=device.company;
Query OK, 3 rows affected (0.00 sec)
Rows matched: 3 Changed: 3 Warnings: 0 mysql>

mysql跨表更新示例的更多相关文章

  1. Mysql跨表更新 多表update sql语句总结

    Mysql跨表更新一直是大家所关心的话题,本文介绍mysql多表 update在实践中几种不同的写法 假定我们有两张表,一张表为Product表存放产品信息,其中有产品价格列Price:另外一张表是P ...

  2. Mysql跨表更新

    Mysql跨表更新一直是大家所关心的话题,本文介绍mysql多表 update在实践中几种不同的写法,需要的朋友可以参考下 假定我们有两张表,一张表为Product表存放产品信息,其中有产品价格列Pr ...

  3. MySql update inner join!MySql跨表更新 多表update sql语句?如何将select出来的部分数据update到另一个表里面?

    项目中,评论数,关注数等数据,是实时更新的.+1,-1 这种. 有的时候,可能统计不准确. 需要写一个统计工具,更新校准下. 用Java写SQL和函数,代码很清晰,方便扩展,但是太慢了. 为了简单起见 ...

  4. MySQL跨表更新字段 工作记录

    工作中遇到两表查询,从user表中获取用户唯一id字段 写入到另外一张qiuzu表中的uid字段中; 二者可以关联起来的只有用户的手机号码tel字段; 了解需求后数据量稍多,不可能一个一个的手动修改 ...

  5. MySQL跨表更新SQL

    1 sql范式  把s表中的city_name的值设置为city表中的name,关联条件是city_code 和 code update student s, city c set s.city_na ...

  6. mysql 跨表更新

    update hhs_goods as g INNER JOIN (select SUM(goods_number) as goods_number,goods_id from hhs_order_g ...

  7. mysql 去重,跨表更新,跨表删除

    一.去重 1.查询出重复的记录 CREATE TABLE push_log_full_2013_10_30_tmp SELECT * FROM `push_log_full` WHERE time B ...

  8. 跨表更新,Mysql Update Join

    背景 项目新导入了一批人员数据,这些人的有的部门名称发生了变化,有的联系方式发生了变化,暂且称该表为t_dept_members, 系统中有另外一张表 t_user_info 记录了人员信息. 要求将 ...

  9. 本表触发更新modifytime,跨表更新modifytime 触发器

    一.每行有改动,则触发更新modifytime SQL> create table test(id int, name varchar(10), crdate date, udate date) ...

随机推荐

  1. mt-datetime-picker type="date" 时间格式 bug

    1.mint-ui 中 mt-datetime-picker 组件,存在日期格式 bug <!-- 日期选择器 --> <template> <div class=&qu ...

  2. 大型视频网站YouTube架构学习笔记

    http://www.kaiyuanba.cn/html/1/131/147/7540.htm这几天一直在关注和学习一些大型网站的架构,希望有一天自己也能设计一个高并发.高容错的系统并能应用在实践上. ...

  3. python--网络编程--主机命令执行

    import os os.system()#执行系统命令 #只能执行命令不能返回值 import subprocess # 能执行系统命令 res=subprocess.Popen('dir',she ...

  4. Android 中View仅仅能接收到ACTION_DOWN无法接收ACTION_MOVE和ACTION_UP解决的方法

    昨天晚上调试了一晚上,在LinearLayout上接收屏幕动作,可是出现了问题, 以下的代码是本人调的代码 </pre><pre name="code" clas ...

  5. .Net Core表单定义

    创建表单 <form asp-controller="Account" asp-action="Login" asp-route-returnurl=&q ...

  6. Html.DropDownListFor的选项值为字符型问题

    我快要疯了.asp.net mvc的这个DropDownListFor,无论在服务器端如何设置,设置哪个值被选中,结果到了页面输出,选中值根本没有被选中,没有任何一个值被选中,下拉框只冷冰冰地显示一个 ...

  7. [ios]objective-c中Category类别(扩展类)专题总结

    本文转载至 http://yul100887.blog.163.com/blog/static/20033613520126333344127/   objective-c类别的作用?通过类别的方式, ...

  8. CSS的两种盒模型

    盒模型一共有两种模式,一种是标准模式,另一种就是怪异模式. 当你用编辑器新建一个html页面的时候你一定会发现最顶上都会有一个DOCTYPE标签,例如: <!DOCTYPE HTML PUBLI ...

  9. Redis 分布式锁的正确实现方式(转)

    _ 前言 分布式锁一般有三种实现方式:1. 数据库乐观锁:2. 基于Redis的分布式锁:3. 基于ZooKeeper的分布式锁.本篇博客将介绍第二种方式,基于Redis实现分布式锁.虽然网上已经有各 ...

  10. spring boot redis分布式锁 (转)

    一. Redis 分布式锁的实现以及存在的问题 锁是针对某个资源,保证其访问的互斥性,在实际使用当中,这个资源一般是一个字符串.使用 Redis 实现锁,主要是将资源放到 Redis 当中,利用其原子 ...