多表联结查询里的内联结,在写 SQL 时其实挺常见的。尤其像 DB2
或 SQL Server
这类关系型数据库,表跟表之间一搭配,就得靠 INNER JOIN
出马。嗯,别小看这个操作,写得好查询又快,写不好结果全错。
从 SELECT tS.SName, C.CourseID, C.Score FROM ttScore AS C INNER JOIN tStudents AS S ON C.StudentID = S.SCode
这段你就能看出来,核心逻辑就一句:用 StudentID
对上 SCode
。语法不复杂,但顺序、表别名、字段对不对,全都不能乱。
要注意,换一下左右顺序,比如写成 FROM ttStudents AS S INNER JOIN ttScore AS C
,结果是一样的,但可读性会不一样。有些团队还挺讲究这个顺序的,统一格式,方便查错。
再说一嘴查询结果的问题。你发现没?SName 有四个,ttScore 有几条,联结之后返回的行数是按匹配数来的,不是行数相加。也就是说,有几条对得上的,就返回几条。不对上的?直接忽略掉,标准的内联结逻辑。
像这种 SQL 写法比较杂的情况,建议你参考下这几个文档,还挺系统的:
如果你平时 SQL 写得多,想查查自己写法正不正规,或者团队要统一写法风格,这类资料可以收藏一下,用起来还挺方便的。