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 テーブルは本質的に順序付けされていないため、問題があります。

それらを 1 列にするか 3 列にするかは不明です。1 つの列として、次を使用して実行できます。

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

3 列に表示する場合は、次のようにします。

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 Functionを使用して、このクエリを試してください:

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