子表: sub
subid, mid, hour
1101 101 5
1102 101 8
1103 102 7
1104 102 3
1105 102 6
1106 103 4
希望显示: 主表信息和关联从表的hour最大值的那一条信息,结果如下
101 张三 男 1101 8
102 李司 女 1102 7
103 王五 男 1103 4本人写了一条SQL语句,可是执行出错,提示 该命令为未正确结束
select A.* , a.* from ( select B.* from sub B
where B.mid= A.mid
order by to_number(B.hour) desc ) a
where rownum<2
from master A
subid, mid, hour
1101 101 5
1102 101 8
1103 102 7
1104 102 3
1105 102 6
1106 103 4
希望显示: 主表信息和关联从表的hour最大值的那一条信息,结果如下
101 张三 男 1101 8
102 李司 女 1102 7
103 王五 男 1103 4本人写了一条SQL语句,可是执行出错,提示 该命令为未正确结束
select A.* , a.* from ( select B.* from sub B
where B.mid= A.mid
order by to_number(B.hour) desc ) a
where rownum<2
from master A
SELECT *
FROM MASTER, (SELECT MID, MAX(HOUR) HOUR FROM SUB GROUP BY MID) X
WHERE MASTER.MID = X.MID;
where B.mid= A.mid
order by to_number(B.hour) desc ) a
where rownum <2
from master A
你这样写只会出来两条纪录楼上方法可以,速度应该也是最快的,这是另一种方法
另外你的语法有错误子查询不能查询外层的,同一层SQL出现两个FROM,两个别名为A
select *
from (
select a.*,b.*,row_number() over (partition by b.mid order by to_number(b.hour) desc) rn
from master a,sum b
where a.mid=b.mid)
where rn=1
select a.*, b.hour
from master a,
(select
mid,
hour,
row_number() over (partition by mid order by to_number(hour) desc) rn
from sub ) b
where a.mid=b.mid
and rn=1