1、开篇

之前上一篇的随笔基本上是单表的查询,也是mysql查询的一个基本。接下来我们要看看两个表以上的查询如何得到我们想要的结果。

在学习的过程中我们一起进步,成长。有什么写的不对的还望可以指出。

2、查询

(1)多表之间的查询(笛卡尔积) 100* 100 = 10000   查询的数据量可能非常大

SELECT pj_appoint_order.user_name,pj_user_account.account_name FROM pj_appoint_order,pj_user_account;

给表名取别名

SELECT pa.user_name,pu.account_name FROM pj_appoint_order pa,pj_user_account pu;

(2)关联查询

隐示内连接查询。

(Sql92)

SELECT pa.user_name,pu.account_name FROM pj_appoint_order pa,pj_user_account pu WHERE pa.id = pu.pid;

内连接查询。

(Sql99)

SELECT pa.user_name,pu.account_name FROM pj_appoint_order pa INNER JOIN pj_user_account pu ON pa.id = pu.pid;

left join on
        如果我写 left join on  就以左表为主
      right join on
        如果我写 right join on  就以右表为主

例如:SELECT
         t1.id id,
         t1.order_id AS designOrderId,
         t1.manager_id,
         t1.project_name projectName,
         t1.user_name userName,
         t1.user_phone userPhone,
         t1.work_price workPrice,
         t1.type_id typeId,
         t1.create_time createTime,
         t1.update_time updateTime,
         t1.project_start_time startTime,
         t1.project_end_time endTime,
         t1.status status,
         t3.meet_time meetTime,
         t3.meet_type meetType,
         t3.meet_content meetContent,
         t5.total totalMain,
         t6.total totalSub
         FROM pj_project_order t1 LEFT JOIN  pj_design_order t2 ON t1.order_id = t2.id
         LEFT JOIN pj_order_comm_record t3 ON t2.id = t3.order_id
         LEFT JOIN pj_order_design_task t4 ON t2.id = t4.order_id
         LEFT JOIN pj_order_design_main_material t5 ON t4 .id = t5.task_id
         LEFT JOIN pj_order_design_sub_material t6 ON t4.id = t6.task_id
         WHERE 1=1
         <if test="manager_id != null">
         AND t1.manager_id = #{manager_id}

</if>
         AND
         t1.project_start_time IS NOT NULL
         AND
         t1.project_end_time IS NULL
         </select>

(3)子查询  -我们以一条查询结果 做为查询条件这叫做子查询 --------------子查询的效率不高

SELECT * FROM person WHERE id = 1  

       SELECT pid FROM car WHERE carname='hanma'  

       SELECT * FROM person WHERE id = ( SELECT pid FROM car WHERE carname='hanma' );

(4)UNION  结合两个查询集

SELECT * FROM pj_appoint_order WHERE id = 1093 UNION  SELECT * FROM pj_appoint_order WHERE id = 1094

Mysql查询——深入学习的更多相关文章

  1. [转]向facebook学习,通过协程实现mysql查询的异步化

    FROM : 通过协程实现mysql查询的异步化 前言 最近学习了赵海平的演讲,了解到facebook的mysql查询可以进行异步化,从而提高性能.由于facebook实现的比较早,他们不得不对php ...

  2. 从项目上一个子查询扩展学习开来:mysql的查询、子查询及连接查询

    上面这样的数据,想要的结果是:如果matchResult为2的话,代表是黑名单.同一个softId,version,pcInfoId的代表是同一个软件,需要去重:同时,如果相同软件里面只要有一个mat ...

  3. Mysql 查询练习

    Mysql 查询练习 ---创建班级表 create table class( cid int auto_increment primary key, caption ) )engine=innodb ...

  4. MySQL查询重复出现次数最多的记录

    MySQL查询的方法很多,下面为您介绍的MySQL查询语句用于实现查询重复出现次数最多的记录,对于学习MySQL查询有很好的帮助作用. 在有些应用里面,我们需要查询重复次数最多的一些记录,虽然这是一个 ...

  5. MYSQL视图的学习笔记

    MYSQL视图的学习笔记,学至Tarena金牌讲师,金色晨曦科技公司技术总监沙利穆 课程笔记的综合. 视图及图形化工具   1.       视图的定义 视图就是从一个或多个表中,导出来的表,是一个虚 ...

  6. mySQl数据库的学习笔记

    mySQl数据库的学习笔记... ------------------ Dos命令--先在记事本中写.然后再粘贴到Dos中去 -------------------------------- mySQ ...

  7. Mysql数据库基础学习笔记

    Mysql数据库基础学习笔记 1.mysql查看当前登录的账户名以及数据库 一.单表查询 1.创建数据库yuzly,创建表fruits 创建表 ) ) ,) NOT NULL,PRIMARY KEY( ...

  8. 13本热门书籍免费送!(Python、SpingBoot、Entity Framework、Ionic、MySQL、深度学习、小程序开发等)

    七月第一周,网易云社区联合清华大学出版社为大家送出13本数据分析以及移动开发的书籍(Python.SpingBoot.Entity Framework.Ionic.MySQL.深度学习.小程序开发等) ...

  9. 【笔记】MySQL的基础学习(二)

    [笔记]MySQL的基础学习(二) MySQL 老男孩  一 视图 视图其实就是给表起个别名 1.创建视图 格式:CREATE VIEW 视图名称 AS SQL语句 CREATE VIEW v1 AS ...

随机推荐

  1. 代码的坏味道(12)——平行继承体系(Parallel Inheritance Hierarchies)

    坏味道--平行继承体系(Parallel Inheritance Hierarchies) 平行继承体系(Parallel Inheritance Hierarchies) 其实是 霰弹式修改(Sho ...

  2. 基于 WebSocket 实现 WebGL 3D 拓扑图实时数据通讯同步(二)

    我们上一篇<基于 WebSocket 实现 WebGL 3D 拓扑图实时数据通讯同步(一)>主要讲解了如何搭建一个实时数据通讯服务器,客户端与服务端是如何通讯的,相信通过上一篇的讲解,再配 ...

  3. JS魔法堂:不完全国际化&本地化手册 之 拓展篇

    前言  最近加入到新项目组负责前端技术预研和选型,其中涉及到一个熟悉又陌生的需求--国际化&本地化.熟悉的是之前的项目也玩过,陌生的是之前的实现仅仅停留在"有"的阶段而已. ...

  4. MyCat源码分析系列之——配置信息和启动流程

    更多MyCat源码分析,请戳MyCat源码分析系列 MyCat配置信息 除了一些默认的配置参数,大多数的MyCat配置信息是通过读取若干.xml/.properties文件获取的,主要包括: 1)se ...

  5. 卷积神经网络提取特征并用于SVM

    模式识别课程的一次作业.其目标是对UCI的手写数字数据集进行识别,样本数量大约是1600个.图片大小为16x16.要求必须使用SVM作为二分类的分类器. 本文重点是如何使用卷积神经网络(CNN)来提取 ...

  6. json显示日期带T问题的解决方法

    此问题是由Newtonsoft.Json转换json导致的: Newtonsoft.Json产生的默认日期时间格式为: IsoDateTimeConverter 格式 解决方法: 需要引用下面的命名空 ...

  7. 开源物联网框架ServerSuperIO(SSIO),项目中实践应用介绍

    一.项目背景 我们是传统行业,但是我们有一颗不传统的心.企业用户遍布国内和国外,面对行业,要建设行业级的(大)数据平台.一提到大数据平台,大家往往想到Hadoop.Spark.Nosql.分布式等等, ...

  8. H5 本地存储一

    localStorage(本地存储),可以长期存储数据,没有时间限制,一天,一年,两年甚至更长,数据都可以使用.sessionStorage(会话存储),只有在浏览器被关闭之前使用,创建另一个页面时同 ...

  9. 深入浅出node(2) 模块机制

    这部分主要总结深入浅出Node.js的第二章 一)CommonJs 1.1CommonJs模块定义 二)Node的模块实现 2.1模块分类 2.2 路径分析和文件定位 2.2.1 路径分析 2.2.2 ...

  10. animation-timing-function: steps() 详解

    在应用 CSS3 渐变/动画时,有个控制时间的属性 <animation-timing-function> .它的取值中除了常用到的 贝萨尔曲线以外,还有个让人比较困惑的 steps()  ...