内联接在SQL92中 ON 表示联接添加,可选的WHERE子句表示过滤条件,如开篇的示例就是一个多表的内联接,我们在看一个简单的示例: 查询成绩大于80分的学生学号,学生姓名和成绩:
- mysql> SELECT
- -> stu.no, stu.name , s.score
- -> FROM student stu JOIN score s ON sstu.no = s.s_no
- -> WHERE s.score > 80;
- +------+-------+-------+
- | no | name | score |
- +------+-------+-------+
- | S001 | Sunny | 98 |
- | S003 | Kevin | 88 |
- +------+-------+-------+
- 2 rows in set (0.00 sec)
上面按语义的逻辑是:
- 第一步:先进行student和score的内连接,如下:
- mysql> SELECT
- -> stu.no, stu.name , s.score
- -> FROM student stu JOIN score s ON sstu.no = s.s_no ;
- +------+-------+-------+
- | no | name | score |
- +------+-------+-------+
- | S001 | Sunny | 80 |
- | S001 | Sunny | 98 |
- | S001 | Sunny | 76 |
- | S003 | Kevin | 78 |
- | S003 | Kevin | 88 |
- | S003 | Kevin | 68 |
- +------+-------+-------+
- 6 rows in set (0.00 sec)
第二步:对内联结果进行过滤, score > 80 得到,如下最终结果:
- -> WHERE s.score > 80;
- +------+-------+-------+
- | no | name | score |
- +------+-------+-------+
- | S001 | Sunny | 98 |
- | S003 | Kevin | 88 |
- +------+-------+-------+
- 2 rows in set (0.00 sec)
(编辑:威海站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|