【发布时间】:2020-01-04 18:21:53
【问题描述】:
我有两张桌子:contracts 和 contract_descriptions。
在contract_descriptions 上有一个名为contract_id 的列,它在contracts 表记录上是相等的。
我正在尝试加入contract_descriptions上的最新记录:
SELECT *
FROM contracts c
LEFT JOIN contract_descriptions d ON d.contract_id = c.contract_id
AND d.date_description =
(SELECT MAX(date_description)
FROM contract_descriptions t
WHERE t.contract_id = c.contract_id)
它有效,但它是一种高效的方式吗?有没有办法避免第二个SELECT?
【问题讨论】:
-
你的数据库名称是什么?
-
数据库名也是contracts
-
我的意思是你的 RDBMS 是什么?像 MySQL 或 MSSQL 还是其他?
-
数据库是PostgreSQL
-
一般来说,您的查询对我来说似乎没问题。但是,如果您可以从两个表中添加具有准确预期输出的示例数据,这将有更多帮助。
标签: postgresql optimization sql-tuning