一、数据库设计
1、三个数据表长这样
 
其中user表记录用户信息,cat主要记录男女性别,mete表是用户id和性别id的对应关系
 
2、具体数据如下
 
二、查询目标
查询出所有性别为“男”的用户的“姓名”,如下记录两种不同形式的查询
1、单纯的条件查询
SQL:

select user.value from user where user.uid in (select mete.uid from mete where mete.cid=1) 
结果:
 
语句解释:
先使用select mete.uid from mete where mete.cid=1语句在mete表中,查找到所有“男”的uid(这里默认我们已经知道cid=1代表男性),再通过条件查询,与上句查询结果进行比对,从而显示出user表中的所有男性名字。
 
2、使用连接查询,条件显示所有用户的姓名和对应的性别
SQL:

select U.value,C.value from mete as M join cat as C on C.cid=M.cid join user as U on U.uid=M.uid 
结果:
语句解释:使用到了内联查询,只输出包含连接条件的数据行,从左往右看,可以理解为先将mete表与cat表连接,通过条件C.cid=M.cid,形成了一个性别类型匹配的新表,新表再和user表连接,通过U.uid=M.uid ,形成了一个姓名匹配的表,此时这三张表就联合形成了一个性别类型、名称类型一一对应的表,长得是这样,
再通过select语句,选出了我们想要的姓名和性别对应的表。
 
注:如上是内联查询,只输出满足所有条件的数据,也可以通过外联查询,不对数据过滤,只对数据组合的新表
SQL:

select * from mete as M left join cat as C on C.cid=M.cid left join user as U on U.uid=M.uid 
语句解释:在join前加left/right,则可以使用外联查询,不同的是连接的表组和后输出左表(右表)中不符合条件的记录,如下

Mysql多表查询(两张独立表,一张关系表)的更多相关文章

  1. Oracle中把一张表查询结果插入到另一张表中

      1. 新增一个表,通过另一个表的结构和数据 create table XTHAME.tab1 as select * from DSKNOW.COMBDVERSION 2. 如果表存在: inse ...

  2. {django模型层(二)多表操作}一 创建模型 二 添加表记录 三 基于对象的跨表查询 四 基于双下划线的跨表查询 五 聚合查询、分组查询、F查询和Q查询

    Django基础五之django模型层(二)多表操作 本节目录 一 创建模型 二 添加表记录 三 基于对象的跨表查询 四 基于双下划线的跨表查询 五 聚合查询.分组查询.F查询和Q查询 六 xxx 七 ...

  3. HAVING,多表查询思路,可视化软件navicat,多表查询练习题,

    HAVING "where"是一个约束声明,在查询数据库的结果返回之前对数据库中的查询条件进行约束,即在结果返回之 前起作用,且"where"后面不能写&quo ...

  4. springdata 查询思路:基本的单表查询方法(id,sort) ---->较复杂的单表查询(注解方式,原生sql)--->实现继承类---->复杂的多表联合查询 onetomany

    springdata 查询思路:基本的单表查询方法(id,sort) ---->较复杂的单表查询(注解方式,原生sql)--->实现继承类---->复杂的多表联合查询 onetoma ...

  5. mysql结构相同的三张表查询一条记录\将一张表中的数据插入另外一张表

    将一张表中的数据插入另外一张表 1.两张表结构相同 insert into 表1名称 select * from 表2名称 2.两张结构不相同的表 insert into 表1名称(列名1,列名2,列 ...

  6. MySQL关系表查询两个表的数据

    如下,有四张表:游戏类型表,游戏表,点卡和游戏关系表,点卡表 CREATE TABLE `gamesType`( `tId` INT AUTO_INCREMENT NOT NULL PRIMARY K ...

  7. EF——一个实体对应两张表,两个实体对应一张表 06 (转)

    本篇日记我们将详细探讨如何将表现领域的类映射到现有的数据库.现在的经济形势不是太好,很多公司都取消了开发新系统的预算.在这种情况下,通常的做法是把原有的几个系统修改一下做个集成,先凑合用着得了.如果要 ...

  8. Mysql中分页查询两个方法比较

    mysql中分页查询有两种方式, 一种是使用COUNT(*)的方式,具体代码如下 1 2 3 SELECT COUNT(*) FROM foo WHERE b = 1;   SELECT a FROM ...

  9. Django学习——Django测试环境搭建、单表查询关键字、神奇的双下划线查询(范围查询)、图书管理系统表设计、外键字段操作、跨表查询理论、基于对象的跨表查询、基于双下划线的跨表查询

    Django测试环境搭建 ps: 1.pycharm连接数据库都需要提前下载对应的驱动 2.自带的sqlite3对日期格式数据不敏感 如果后续业务需要使用日期辅助筛选数据那么不推荐使用sqlite3 ...

  10. 不使用left-join等多表关联查询,只用单表查询和Java程序,简便实现“多表查询”效果

    上次我们提到,不使用left-loin关联查询,可能是为了提高效率或者配置缓存,也可以简化一下sql语句的编写.只写单表查询,sql真得太简单了.问题是,查询多个表的数据还是非常需要的. 因此,存在这 ...

随机推荐

  1. Mybatis-Generator 自动生成Dao、Model、Mapping相关文档

    最近在学习mybatis,结果在写Mapping的映射文件时insert语句一直报错,于是想看看标准的映射文件是什么样.百度到Mybatis-Generator 自动生成Dao.Model.Mappi ...

  2. iOS缓存框架-PINCache解读

    文/Amin706(简书作者)原文链接:http://www.jianshu.com/p/4df5aad0cbd4著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”. 在项目中总是需要缓存一 ...

  3. Apple Tree(需要预处理的树状数组)

    Apple Tree Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 20335   Accepted: 6182 Descr ...

  4. A problem is easy

    描述When Teddy was a child , he was always thinking about some simple math problems ,such as “What it’ ...

  5. 源自梦想 自定义ViewGroup的整理_1

    今天说说自定义控件,稍微偏底层一点的东西.今天的主要任务是自己完全写代码,写一个ViewGroup,实现一个类似ViewPager这样的一个功能. 大家自定义View肯定写过,不过估计写的也不多.等大 ...

  6. VMware系统运维(二十)部署虚拟化桌面Horzion View 5.2 HTML Access进行连接测试

    1.通过浏览器打开Horzion View登录界面,https://conntionserver.testad.local,点击"VMware Horzion View HTML Acces ...

  7. tornado 信号处理

    一般情况下,对于线上的程序,我们是不能采取kill -9 来杀掉进程的 因为程序可能有未处理完的程序,如果贸然采取kill -9可能会导致数据不一致 如果需要关闭程序怎么办呢,一般情况下我们采取信号技 ...

  8. hdu 3594 仙人掌图

    思路:利用它的几条性质 #include<set> #include<map> #include<cmath> #include<queue> #inc ...

  9. ankhSVN安装后,VS2010使用

    Tool->option->Source control->plug-in selection,选择ankhSVN AnkhSvn-2.5.12478.zip

  10. Jfinal----Handler之责任链设计模式

    Jfinal handler的处理采用了责任链设计模式 有关责任链模式,推荐看: <JAVA与模式>之责任链模式 1.实现Handler只需要继承Handler public class ...