【发布时间】:2011-08-18 01:35:19
【问题描述】:
我刚刚查看了一些示例数据库查询,发现了这个:
查找研究部门员工的标识符、姓名和地址。
方法一:加入方法
SELECT Ssn, FName, LName, Address
FROM EMPLOYEE, DEPARTMENT
WHERE Dno = Dnumber
AND Dname = ‘Research’
方法二:子查询法
SELECT Ssn, FName, LName, Address
FROM EMPLOYEE
WHERE Dno IN
( SELECT Dnumber
FROM DEPARTMENT
WHERE Dname = ‘Research’ );
在这些示例中,为什么不能省略 Dno = Dnumber 行?你怎么知道什么时候包含这个?
【问题讨论】:
-
@John,你从哪里得到那些难看的花引号?
-
@Johan,这种语法
SELECT Ssn, FName, LName, Address FROM EMPLOYEE, DEPARTMENT WHERE Dno = Dnumber自 SQL'89 以来已被贬低,使用显式连接语法 cf ansi '92 会好得多。见wikipedia:join -
不,这不是家庭作业...引号在我的笔记中! :)
-
@John,可以在 SO 上做功课。有些人介意有些人不介意。而且我知道那个例子来自教科书。
-
@Johan 正确回答问题很重要......如果问题正在寻找“学术”答案,我们可能会采用与“现实世界”解决方案不同的方法。