1

我有以下表结构:

Time_Stamp  Number
9/07/13     234
9/07/13     345
9/07/13     456
10/07/13    765
10/07/13    834
10/07/13    257

我想像这样打印它:

9/07/13     234 345 456
10/07/13    765 834 257

知道我该怎么做吗?

编辑:

这就是我目前打印行的方式:

    if(!$result_db_post = $db->query($query)){
          die('There was an error running the query [' . $db->error . ']');
      }

       while($row = $result_db_post->fetch_assoc()){

          echo $row['time_stamp'] ." ". $row['number'];
          echo "<br />";                               
}

这导致此输出:

    9/07/13 234
    9/07/13 345
    9/07/13 456
   10/07/13 765
   10/07/13 834
   10/07/13 257

我已经尝试了这两个查询,并且都产生了相同的输出。

select Time_Stamp, group_concat(Number separator ' ') as Numbers
from t
group by Time_Stamp;

我也试过:

SELECT Time_Stamp, GROUP_CONCAT(Number) From table group by Time_Stamp

知道我做错了什么吗?

4

2 回答 2

3

您似乎希望将数字按照与原始数据中相同的顺序排列。但是,SQL 表本质上是无序的,因此存在一个问题。

目前尚不清楚您是希望它们在一列还是三列中。作为一列,您可以使用:

select Time_Stamp, group_concat(Number separator ' ') as Numbers
from t
group by Time_Stamp;

如果您希望它们在三列中,您可以执行以下操作:

select Time_Stamp,
       substring_index(group_concat(Number), ',', 1) as Number1,
       substring_index(substring_index(group_concat(Number), ',', 2), -1) as Number2,
       substring_index(substring_index(group_concat(Number), ',', 3), -1) as Number3
from t
group by Time_Stamp;

但是,顺序是不确定的。

于 2013-07-20T01:46:57.523 回答
2

使用GROUP_CONCAT 函数,试试这个查询:

SELECT Time_Stamp, GROUP_CONCAT(Number) From table group by Time_Stamp
于 2013-07-20T01:43:30.457 回答