SQL联表查询,即从两个表中获取数据

554 阅读1分钟

join on语法

各种连接的情况入下图(红色的就是返回的数据):

主要有3种连接

  • INNER JOIN: 如果表中有至少一个匹配,则返回行
  • LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
  • RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行 以 INNER JOIN: 为例
SELECT s.studentno,studentname,subjectno,studentresult FROM 
student AS s INNER JOIN result AS r   #取别名防止select中的studentno不确定从哪张表获取
ON s.`studentno`=r.`studentno`   #交叉点,两张表都有studentno
#onwhere几乎一样,都是加条件,前者叫连接查询,后者叫等值查询

查询(select)的数据如果左表(student)没有,就去右表(result)查,查到就返回;

如果有超过两张表的程序(方法论)

  • 就两张表先连接查询(join)
  • 两张表join完就变成了一张表(逻辑上)
  • join完后再join(此时逻辑上就是两张表的join),
  • 以此类推