MySQL组由哪里

时间:2013-09-16 20:40:23

标签: mysql sql

假设我有一个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

2 个答案:

答案 0 :(得分:4)

一种简单的方法是使用相关子查询来获取最大值;

SELECT id1, id2, status, 
  (SELECT MAX(value) FROM test1 t2 WHERE t1.id1 = t2.id1) value 
FROM test1 t1
WHERE status = 'VN'

An SQLfiddle to test with

答案 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'