美文网首页
mysql连表查询

mysql连表查询

作者: ZMRWEGo | 来源:发表于2019-04-11 15:08 被阅读0次

    1. 交叉连接 (cross join)

    假设有t1和t2两张表,交叉连接最简单的即是
    select * from t1,t2;它会把t1表中的每一行记录和t2表中的所有记录相关联。
    我们把这种没有任何限制的条件的查询方式称之为交叉连接,可以看到,任意一个表的数据增加一行,其交叉连接的查询记录都会增加很多。

    2. 内连接

    内连接表示两张表中同时符合某种条件的数据
    select * from t1,t2 where t1.id = t2.id;
    这种写法其实是一种隐式的内连接写法,可转化为
    select * from t1 inner join t2 on t1.id = t2.id; (等值连接)
    select * from t1 inner join t2 on t1.id > t2.id (不等连接)
    这种连接用on指明条件

    3. 外连接

    外连接分为两种,左外连接与右外连接,我们只要搞明白其中的任意一个的意思即可。
    select * from t1 left join t2 on t1.id = t2.id;
    这里以t1为主表,t2为从表,所以搜索出来的数据会有t1的所有数据即使t2没有数据,也会列出来,这时相关字段的值为null
    显示的时候,哪个表在前,该表的列就在前
    还有一种情况:就是当t1中只有一行数据,但t2中有多行数据时,这时候也会显示多行数据。

    4. 多行查询

    联合查询比较容易理解,把联合查询理解成把多个查询语句的查询结果集中在一起显示。
    select * from t1 union select * from t2;
    这里要求select的列数要相等,同时字段名与t1的相同

    5. 全连接

    全连接可以理解为没有主表之分(相对于外连接),两个表的数据都要查询出来
    mysql中没有全连接,可以先左连接,然后右连接,再将两者的查询记录union起来。

    相关文章

      网友评论

          本文标题:mysql连表查询

          本文链接:https://www.haomeiwen.com/subject/ksutwqtx.html