假设我有一个sql表:table1的记录如下所示:
id1 id2 status value
A A123 VN 1
A A234 AB 2
B B123 VN 3
B B321 AB 4
C C324 AB 5
我想获取id1,id2,其状态为VN,并且值为共享相同id1的那些记录的最大值。
在这种情况下,输出应该看起来像
id1 id2 status value
A A123 VN 2
B B123 VN 4
我不太清楚如何编写查询,任何帮助将不胜感激!
这是我到目前为止所做的。
select
test1.*
from test1
inner join
(select
part_id
from table1
where status = 'VN') a
on test1.id1 = a.id1;
我可以得到这个,但我不知道如何正确地做组和max(值):
id1 id2 status value
A A123 VN 1
A A234 AB 2
B B123 VN 3
B B321 AB 4
答案 0 :(得分:4)
一种简单的方法是使用相关子查询来获取最大值;
SELECT id1, id2, status,
(SELECT MAX(value) FROM test1 t2 WHERE t1.id1 = t2.id1) value
FROM test1 t1
WHERE status = 'VN'
答案 1 :(得分:0)
问题尚不清楚,但我认为这会对你有帮助。
SELECT T1.id1, T1.id2, T1.status, T2.value
FROM tbl T1
JOIN
(SELECT id1, MAX(value) value FROM tbl GROUP BY id1) T2
ON T1.id1 = T2.id1
WHERE status = 'VN'