首页 > 解决方案 > 这两种在 SQL 中连接表的方法之间的真正区别是什么

问题描述

我看到人们在 SQL 中使用两种不同的方法来加入表;例如,我有两个表:

    Table A                                   Table B       
DeliveryDate    EMP     Hours          Date      EMP    Route
 5/14/2017     611300    1            5/14/2017 611300  11101
 5/14/2017     611301    3            5/14/2017 611301  11102
 5/13/2017     611300    4            5/13/2017 611300  11101
 5/13/2017     611301    5            5/13/2017 611301  11102
                                      5/13/2017 611301  11103

对于这两个表,EMP(employee id) 是字符串,小时数是数字,基本上想将拖车表连接在一起,以获得员工工作的小时数和他工作的路线数。我看到人们使用两种不同的代码来达到目的,但是这两种方法之间的真正区别是什么?哪一个更好?下面的代码:

代码 1:

SELECT C.DELIVERYDATE,C.EMP,C.HOURS,D.ROUTES
FROM
(
SELECT 
A.DeliveryDate, A.EMP, A.Hours
FROM 
A
) C,
(
SELECT
B.DATE,B.EMP,COUNT(B.ROUTE) AS ROUTES
FROM 
B
group BY B.DATE,B.EMP
)D
WHERE C.DeliveryDate=D.DATE
 AND    C.EMP=D.EMP

代码 2:

SELECT C.DELIVERYDATE,C.EMP,C.HOURS,D.ROUTES
FROM
(
SELECT 
A.DeliveryDate&A.EMP AS DATEEMP, A.DELIVERYDATE,A.EMP,A.Hours
FROM 
A
) C,
(
SELECT
B.DATE&B.EMP AS DATEEMP,B.DATE,B.EMP,COUNT(B.ROUTE) AS ROUTES
FROM 
B
group BY B.DATE,B.EMP
)D
WHERE C.DATEEMP=D.DATEEMP

非常感谢

标签: sql

解决方案


正确的连接语法是这样的:

Select * from table1 a join table2 b on a.fkey=b.pkey where [add conditions here]

推荐阅读