WHERE 子句 SAME ID 不同的 TABLES 与 JOIN
WHERE Clause SAME ID different TABLES vs JOIN
我阅读了几篇帖子,但找不到解决该问题的帖子。在 T-SQL 查询中,我将执行以下操作:
list the (employee last name, project number, assigned job from the
(Employee AND Assignment tables) -- where the employee table
–(employee number) is equal to the assignment table (employee number).
这是否需要内部联接,还是可以使用 WHERE
子句来完成?
我尝试了以下但返回了不明确的错误:
SELECT
EMP_LNAME, PROJECT_NUM, ASSIGN_JOB
FROM
ASSIGNMENT, EMPLOYEE
WHERE
EMP_ID = EMP_ID
您遇到了一个不明确的错误,因为您需要为表设置别名。但要回答您的问题,您当前的查询是进行连接的旧式查询,并且工作方式相同。我更喜欢更新的样式 inner join
因为它更易于阅读,imo.
SELECT e.EMP_LNAME, a.PROJECT_NUM, a.ASSIGN_JOB
FROM ASSIGNMENT a,EMPLOYEE e
WHERE a.EMP_ID = e.EMP_ID
实际上等同于:
SELECT e.EMP_LNAME, a.PROJECT_NUM, a.ASSIGN_JOB
FROM ASSIGNMENT a
INNER JOIN EMPLOYEE e ON a.EMP_ID = e.EMP_ID
我阅读了几篇帖子,但找不到解决该问题的帖子。在 T-SQL 查询中,我将执行以下操作:
list the (employee last name, project number, assigned job from the (Employee AND Assignment tables) -- where the employee table –(employee number) is equal to the assignment table (employee number).
这是否需要内部联接,还是可以使用 WHERE
子句来完成?
我尝试了以下但返回了不明确的错误:
SELECT
EMP_LNAME, PROJECT_NUM, ASSIGN_JOB
FROM
ASSIGNMENT, EMPLOYEE
WHERE
EMP_ID = EMP_ID
您遇到了一个不明确的错误,因为您需要为表设置别名。但要回答您的问题,您当前的查询是进行连接的旧式查询,并且工作方式相同。我更喜欢更新的样式 inner join
因为它更易于阅读,imo.
SELECT e.EMP_LNAME, a.PROJECT_NUM, a.ASSIGN_JOB
FROM ASSIGNMENT a,EMPLOYEE e
WHERE a.EMP_ID = e.EMP_ID
实际上等同于:
SELECT e.EMP_LNAME, a.PROJECT_NUM, a.ASSIGN_JOB
FROM ASSIGNMENT a
INNER JOIN EMPLOYEE e ON a.EMP_ID = e.EMP_ID