mysql,有多个行可以分组吗?

时间:2014-08-07 02:15:43

标签: mysql sql

我想根据testid和buildnumber获取行。

表格我看起来像是

+------+-----------+------------+
|testid|distanceAF3| buildnumber|
+------+-----------+------------+
|1     |13.1       | 1149       | 
|2     |12.1       | 1149       | 
|3     |9.3        | 1149       | 
|4     |15.2       | 1304       | 
|5     |19.4       | 1304       | 
|6     |23.3       | 1304       | 
+--+-----+-------+---------+----+

如您所见,如果我基于buildnumber进行分组,则组为1149和1304 我想基于buildnumber得到行,但是每个构建号都有不同的testid(testid 1,2和3属于1149,4,5和6属于1304 build),我想有所有不同同时也是如此。

输出将是

+------+-----------+------------+
|testid|distanceAF3| buildnumber|
+------+-----------+------------+
|1     |13.1       | 1149       | 
|2     |12.1       |            | 
|3     |9.3        |            | 
|4     |15.2       | 1304       | 
|5     |19.4       |            | 
|6     |23.3       |            | 
+--+-----+-------+---------+----+

是否可以使用mysql?

由于

2 个答案:

答案 0 :(得分:2)

尝试:

select t.testid, t.distanceaf3, x.buildnumber
  from tbl t
  left join (select buildnumber, min(testid) as testid
               from tbl
              group by buildnumber) x
    on t.testid = x.testid

小提琴: http://sqlfiddle.com/#!2/d77e9/1/0

作为替代方案 - 我想你正在使用PHP? - 您可以显示或不显示BUILDNUMBER字段,具体取决于当前行的值是否与上一行相同(使用循环中的#,而前一个#)

答案 1 :(得分:1)

您想要testid的列表吗?如果是,group_concat()执行此操作:

select buildnumber, group_concat(testid) as testid
from table t
group by buildnumber;