【发布时间】:2014-02-26 16:37:02
【问题描述】:
显然,Oracle 不允许对子查询进行外连接。对于表 A 上的每一行,我正在尝试查找表 B 上具有相同 ID 和最新日期的行。
类似这样的:
SELECT a.*, b.date, b.val1, b.val2
FROM a, b
WHERE b.id (+) = a.id
AND b.date (+) = (SELECT MAX(b.date) FROM a, b WHERE a.id = b.id);
删除 b.date 上的外连接 (+) 可以对其进行解析,但是当表 B 上没有行时,不会返回任何行。在这种情况下,我需要查询只返回 NULL。有没有办法解决这个问题?
谢谢
【问题讨论】:
-
你为什么不能使用
order by b.date desc -
谢谢 - 我需要从 B 中选择其他几个字段。更新了问题。
-
没关系,因为您关心的是最新日期的行,您仍然可以使用 order by
-
好的。我还需要从另一个表 C 中选择一些匹配的行。你能举一个例子说明这将如何工作吗?谢谢
-
你并不完全清楚你想要什么为空。如果不是最大值,您是否希望 B 中的日期为空?或者如果日期不是最大值,您是否希望 B 中的所有内容都为空?
标签: sql oracle scalar-subquery