改进基本SQL查询 - 对结果进行分组

时间:2011-08-20 11:36:27

标签: mysql sql

我正在改进一段执行MySQL查询的PHP代码。该查询当前生成一组结果,如下所示:

id  summary status  date_submitted  last_updated    value
48  test case 1 30  1313755157  1313755252  Low Yield
48  test case 1 30  1313755157  1313755252  28BK
48  test case 1 30  1313755157  1313755252  Yield
48  test case 1 30  1313755157  1313755252  3
48  test case 1 30  1313755157  1313755252  1
48  test case 1 30  1313755157  1313755252  n/a

Value将始终不同,但所有其他字段将是相同的值。我想将上面的内容转换成这样的

id  summary status  date_submitted  last_updated value1, value2, value3, value4, value5
48  test case 1 30  1313755157  1313755252      Low Yield 28BK Yield 3    1         n/a

所以每个值都有自己的列。我认为我不需要粘贴获得第一个结果的大量查询?我猜人们可以将结果视为一个表格并从中得出一个查询?如果需要,我会发布原始查询。

非常感谢。

2 个答案:

答案 0 :(得分:1)

你无法做到这一点,但你可以用逗号分隔的值列表。看到这个问题:

How to use GROUP BY to concatenate strings in MySQL?

你会写一些类似的东西:

SELECT
  id,
  summary,
  status,
  date_submitted,
  last_updated,
  GROUP_CONCAT(value SEPARATOR ',') as values
FROM
  table
GROUP BY
  id,
  summary,
  status,
  date_submitted,
  last_updated

在这种情况下,值将采用“低收益率,28BK,收益率,3,1,不适用”的值。

答案 1 :(得分:0)

你可以使用一组case和column别名:

Select Case value = 'Low Yield' then 'Low Yield' else NULL END as LowYieldCol,
Case value = 'Yield' then 'Yield' else NULL END as YieldCol,
......

等等