在SQL中加入JOIN的有效方法

时间:2015-06-04 15:23:15

标签: sql

我必须加入两个表:文章和销售,但不是文章的所有数据,只需要最后一次加载。

这两种方式有区别吗?有一种最快/最有效的方式吗?更重要的是,为什么?

1)

SELECT *
FROM sales S
INNER JOIN articles A
ON S.article_id = A.article_id AND A.load_date = (SELECT MAX(load_date) FROM articles)

2)

SELECT *
FROM sales s
INNER JOIN (
    SELECT *
    FROM articles
    WHERE load_date = (SELECT MAX(load_date) FROM articles)
) A
ON s.article_id = a.article_id

1 个答案:

答案 0 :(得分:0)

大多数DBMS还支持窗口化聚合函数,RANK可能更有效(如果你习惯了,也更容易编写):

SELECT *
FROM
 (
   SELECT *,
     RANK()  -- max date gets rank #1
     OVER (PARTITION BY a.article_id
           ORDER BY a.load_date DESC) rn
   FROM sales s
   INNER JOIN articles a
   ON s.article_id = a.article_id
 ) dt
WHER rn = 1