mysql左联和内联有什么区别

mysql左联和内联有什么区别,第1张

这是多表查询的名词。 比如两个表A,B ,其中A表内有ID列,B表有aID,使用A inner join B on A.ID=B.aID产生的结果是:只有满足A 的ID和B的aID 相等的值才显示出来,并且每个单元格的值(ID,aID)不可能有空的。而left join 产生的结果是:以A表ID为标准,查找ID=aID 的结果,如果B的aID不存在与之对应的值,则新结果的aID这个单元格是空的。

sql内联语法基础语法(inner join)

SELECT * FROM 表1 inner join 表2 on 表1.userid=表2.userid

sql内联语法说明:上面的语句就是查询表1和表2两个表,只要两个表中的userid字段相同的话就拼成一行显示出来。

45it.com注:以上语法同等select * from 表1,表2 where 表1.userid=表2.userid,而使用sql内联的话,将会提高很多效率。

sql左联语法基础语法(left outer join)

SELECT * FROM 表1 LEFT OUTER JOIN 表2 ON 表1.userid=表2.userid

sql左联语法说明:显示表1中所有的行,并且把表2中所有符合条件的数据都显示到结果集中,如果表2中不符合的数据的都不会显示在结果集中,并且以null显示。

一般所说的左连接,外连接是指左外连接,右外连接。做个简单的测试你看吧。

先说左外连接和右外连接:

[TEST1@orcl#16-12月-11] SQL>select * from t1

ID NAME

---------- --------------------

1 aaa

2 bbb

[TEST1@orcl#16-12月-11] SQL>select * from t2

IDAGE

---------- ----------

1 20

3 30

左外连接:

[TEST1@orcl#16-12月-11] SQL>select * from t1 left join t2 on t1.id=t2.id

ID NAME IDAGE

---------- -------------------- ---------- ----------

1 aaa 1 20

2 bbb

右外连接:

[TEST1@orcl#16-12月-11] SQL>select * from t1 right join t2 on t1.id=t2.id

ID NAME IDAGE

---------- -------------------- ---------- ----------

1 aaa 1 20

3 30

从上面的显示你可以看出:左外连接是以左边的表为基准。通俗的讲,先将左边的表全部显示出来,然后右边的表id与左边表id相同的记录就“拼接”上去,比如说id为1的记录。如果没有匹配的id,比如说t1中id为2的t2中就没有。那边就以null显示。

右外连接过程正好相反。

再看内连接:

[TEST1@orcl#16-12月-11] SQL>select * from t1 inner join t2 on t1.id=t2.id

ID NAME IDAGE

---------- -------------------- ---------- ----------

1 aaa 1 20

看到没有? 只有一条记录。内连接就是只取出符合过滤条件的记录 也就是t1.id=t2.id 那么符合t1.id=t2.id的记录只有id=1这一条,所以只显示一条。 不像外连接,是将你作为基准的表(左外连接就是左边表为基准,右外连接就是右边表为基准)的所有行都显示出来。

综上所述,你应该能明白了吧?如果不明白请留言。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/8618911.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-18
下一篇2023-04-18

发表评论

登录后才能评论

评论列表(0条)

    保存