我必须加入两个表:文章和销售,但不是文章的所有数据,只需要最后一次加载。
这两种方式有区别吗?有一种最快/最有效的方式吗?更重要的是,为什么?
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
答案 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