zoukankan      html  css  js  c++  java
  • MySQL多表连接查询

    多表连接查询

    数据表的连接查询常用的有内连接和外连接两种,其中外连接又分为左连接和右连接。

    内连接查询

    通过INNER JOIN……ON关键字实现,命令如下:

    SELECT field1,field2,……fieldn from table_name INNER JOIN join_table ON join_condition;

    • ON 后面的字段其实就是外键约束中两个对应的列名
    • 内连接时如果忽略on条件的限制,就会出现前表中所有记录和后表中所有记录一一对应的情况。记录数量会变成m*n条,一定要避免出现这种情况

     外连接查询

    命令如下:
    SELECT field1,field2,……fieldn from table_name LEFT / RIGHT JOIN join_table ON join_condition;

    左连接和右连接查询的区别是:
    左连接的主表是 'table_name',右连接的主表是'join_table'
    查询时以主表数据为准,主表中有的数据才会显示,主表中没有的数据及时附表中有也不显示在结果中!!

    子查询

    子查询可以将一张表的数据作为条件去查另一张表

    单行单列

    SELECT */field from table_a WHERE field1 > (SELECT field1 from table_b where field2 = '举例');

    释义:从B表中查询出字段=‘举例’的数据对应的字段1,那么这个查询结果一定是一个单行单列的数据,再用这个数据查询最终想要输出的数据,要求两个表起码有一个共有字段,括号内返回的值必须是单行单列的值!

     单行多列

    SELECT */field from table_a WHERE (field1,field2) > (SELECT (field1,field2) from table_b where field2 = '举例';
    释义:从B表中查询出字段=‘举例’的数据对应的字段1和字段2,再用这两个数据查询最终想要输出的数据
    要求两个表起码有两个共有字段,括号内的返回值和查询的列名必须一致!

    单列多行

    SELECT */field from table_a WHERE field1 in (SELECT field1 from table_b);→查询结果在返回字段结果内,与其对应的是 not in,表示查询结果不在返回字段结果内

    SELECT */field from table_a where field1 >= ANY(SELECT field1 from table_b);→只能查询数值,满足ANY后面的返回结果中的任意一个就返回查询结果

    SELECT */field from table_a where field1 >= ALL(SELECT field1 from table_b);→只能查询数值,满足ALL后面的返回结果中的全部数值才返回查询结果


    原文链接:https://blog.csdn.net/su_2018/article/details/83832594



     

  • 相关阅读:
    Ubuntu Linux Matlab 安装 中文乱码 桌面启动器 Could not find the main class: java/splash.png. 终端terminal 直接运行 matlab
    Ubuntu Linux 官网 u盘安装 u盘系统 图文教程
    从google map google earth获得大图 方法总结
    论文查重网址
    [ZZ] Computer Science Conference Rankings
    Ubuntu linux 信使 iptux Window 飞鸽 ipmsg 飞秋 feiq 文件传输
    Ubuntu Linux Matlab mex
    Ubuntu Dell OptiPlex 990 Intel Gigabit CT Desktop Adapter网卡驱动安装
    C++的File类文件操作
    GIS软件比较
  • 原文地址:https://www.cnblogs.com/lvhuayan/p/15257180.html
Copyright © 2011-2022 走看看