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



     

  • 相关阅读:
    python读写文件模式的区别
    【Terminal】终端美化
    【Macintosh】MAC基本使用
    【MySQL】使用mysql数据量统计
    软件测试自学还是报班好?需要掌握哪些技能?
    400页共计800道软件测试面试真题汇总!超全干货
    软件测试是吃青春饭的吗?30岁后软件测试该何去何从?
    leetcode_链表操作1
    [数据库系列之MySQL] Mysql整体架构浅析一
    Ubuntu 配置谷歌Android Test Station
  • 原文地址:https://www.cnblogs.com/lvhuayan/p/15257180.html
Copyright © 2011-2022 走看看