我有一个要求。如何查询两个不同表中两列的最大值?
我有两个表,说TableA和TableB。都有一个名为“rec_id”的列。我的要求是使用单个查询来获取包含在这两列中的最大值。
例如:在TableA中,我有“rec_id”值为{1,5,6},而在TableB中,我有“rec_id”值为{1,4,2}。因此,在执行查询之后,我希望结果为“6”,因为6是来自这两个表中这两列的最大值。
由于事先 阿尼什Kurian表示
我有一个要求。如何查询两个不同表中两列的最大值?
我有两个表,说TableA和TableB。都有一个名为“rec_id”的列。我的要求是使用单个查询来获取包含在这两列中的最大值。
例如:在TableA中,我有“rec_id”值为{1,5,6},而在TableB中,我有“rec_id”值为{1,4,2}。因此,在执行查询之后,我希望结果为“6”,因为6是来自这两个表中这两列的最大值。
由于事先 阿尼什Kurian表示
select max(rec_id) from
(
(select rec_id from tablea)
union all
(select rec_id from tableb)
) combined
select max(rec_id) from
(
(select MAX(rec_id) AS rec_id from tablea)
union
(select MAX(rec_id) AS rec_id from tableb)
) combined
相较于弥敦道Feger的答案,这将是更好的性能
“与Nathan Feger的答案相比,这将更具性能” - 不一定;这取决于数据库引擎如何处理它。实际上,我预计它会稍微恶化一点,因为您仍然需要扫描两个表中的所有rec_id值,但是您的查询必须导出三个最大值,而Nathan只需要导出一个值。 – 2010-10-01 13:24:38
如果索引覆盖'rec_id',则不会有扫描。最大值取O(1)复杂度。 – zerkms 2010-10-02 04:28:41
您仍然需要通读索引。 – 2010-10-04 12:52:07
+1你12秒打我! :) – 2010-10-01 00:02:53
@ Bill卡尔文有时它关于技巧的运气。谢谢 – 2010-10-01 00:12:05