![](/img/trans.png)
[英]how to get a row from sql table which have a column value equal to maximum of count of a column value of same sql table
[英]SQL Join to Get Row with Maximum Value from Right table
我在使用sql join(oracle / ms sql)时遇到问题我有两个表
ID | 出价
--- | ------
1 | 1
1 | 4
2 | 3
2 | 2
----------
B_ID | B_VA | B_VB
------- | -------- | -------
1 | 1 | 一种
2 | 2 | b
3 | 5 | C
4 | 2 | d
-----------------------
从这两个表中,我需要A.ID,B.B_ID,B.B_VA(最大值),B.B_VB(最大值为B.B_VA),因此结果表就像
ID | B_ID | B_VA | B_VB
------- | -------- | -------- | -------
1 | 4 | 2 | d
2 | 3 | 5 | C
我尝试了一些连接但没有成功。 谁能帮助我查询以获得我想要的结果。
谢谢
您所描述的逻辑与数据不太吻合。 例如, b_va
是数字,但是输出中的列是字符串。
也许您想要这个。 要汇总的a
的数据以获得最大b_id
值。 然后将要连接的每个列都获得相应的b_vb
列。 至少符合您所需的输出:
select a.id, a.b_id, b1.b_vb as b_va, b2.b_vb
from (select id, max(b_id) as b_id
from a
group by id
) a join
b b1
on a.id = b1.b_id join
b b2
on a.b_id = b2.b_id;
编辑:
对于更正的数据,我认为这是您想要的:
select a.id, a.b_id, max(b1.b_va) as b_va, b2.b_vb
from (select id, max(b_id) as b_id
from a
group by id
) a join
b b1
on a.id = b1.b_id join
b b2
on a.b_id = b2.b_id
group by a.id, a.b_id, b2.b_vb;
尝试这个
SELECT X.ID, Y.B_ID, X.B_VA, Y.B_VB
FROM (SELECT A.ID, MAX(B_VA) AS B_VA
FROM A INNER JOIN B ON A.B_ID = B.B_ID
GROUP BY A.ID) AS X INNER JOIN
A AS Z ON X.ID = Z.ID INNER JOIN
B AS Y ON Z.B_ID=Y.B_ID AND X.B_VA=Y.B_VA
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.