【发布时间】:2018-05-16 19:57:35
【问题描述】:
我看到人们在 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
非常感谢
【问题讨论】:
-
我觉得这两个代码都写得不好——使用正确的连接语法
-
我不认为它是重复的,为什么它们效率不高?有更好的方法吗?
-
正确的连接语法见下文
-
@jarlh 你知道吗? stackoverflow.blog/2018/04/26/…
标签: sql