HOWTO限制的请求我有一个大的语句:甲骨文左外连接:右表
的问题是,settings
包含大量条目,我需要选择一个具有最高的ID。我可以想象改变这个陈述并用一个子选择(从settings
获取正确的条目)替换联接,但我很好奇看看是否有更好的解决方案。任何输入赞赏。非常感谢!
HOWTO限制的请求我有一个大的语句:甲骨文左外连接:右表
的问题是,settings
包含大量条目,我需要选择一个具有最高的ID。我可以想象改变这个陈述并用一个子选择(从settings
获取正确的条目)替换联接,但我很好奇看看是否有更好的解决方案。任何输入赞赏。非常感谢!
您可以使用子查询从右表中获取所需的结果。
喜欢的东西:
SELECT
*
FROM
accounts a,
(
SELECT
user_id,
*
FROM
settings
WHERE
RANK() OVER (ORDER BY id DESC, PARTITION BY user_id) = 1
) s
正从一个表中的最高ID可以与
select max(id) ...
或做一个
select id from settings where rownum=1 order by id desc
(我倾向于第一种解决方案) 或者就像John提出的那样,但是无论如何你需要一个子查询。 一件事,有可能是你的榜样一些错字,我没有看到,其中d是从哪里来的,既不使自动左连接的点...
这里是我也会写
SELECT
user_id, user_name,
name, value,
default
FROM
accounts join
(select user_id,name
from settings
where RANK() OVER (ORDER BY id DESC, PARTITION BY user_id) = 1) using(user_id)
LEFT OUTER JOIN default using (name)
...仍子查询
窗口函数不能在WHERE子句中使用。 – 2010-09-08 13:03:28
哦,真的吗?好吧,在一个子选择然后,1秒。 – 2010-09-08 13:04:08