「牛客网-SQL篇」SQL21 浙江大学用户题目回答情况
题目
我的解答(错误)
select
device_id,question_id,result
from
question_practice_detail qpd
left join
user_profile up
where
qpd.device_id=up.device_id and up.university='浙江大学'
输出:
SQL_ERROR_INFO: "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'where\n qpd.device_id=up.device_id and up.university='浙江大学'' at line 7"
知识点复习:表连接
根据表连接的方式分类:
- 内连接
- 等值连接
- 非等值连接
- 自连接
- 外连接
- 左外连接(左连接)
- 右外连接(右连接)
- 全连接
内连接-等值连接
案例:查询每个员工所在部门名称?
SQL92语法:
select
e.ename,d.dname
from
emp e,dept d
where
e.deptno = d.deptno;
SQL99语法:
select
e.ename,d.dname
from
emp e
join
dept d
on
e.deptno = d.deptno;
这里,,
改为join
,where
改为on
,on
后面跟条件。
SQL99语法倡导
- 表连接条件和后续的筛选条件分离
SQL92语法:
select
e.ename,d.dname
from
emp e,dept d
where
e.deptno = d.deptno and 后面加条件;
缺点:表连接的条件与连接后过滤的条件耦合了,结构不清晰。
SQL99语法:
select
e.ename,d.dname
from
emp e
join
dept d
on
e.deptno = d.deptno
where
...;
优点:表连接条件是表连接,后续过滤可以加where进行过滤,结构更清晰一些。
SQL99语法:
select
...
from
a
join
b
on
a和b的连接条件
where
筛选条件
SQL99语法:
select
.