3

私は通常のテーブルを持っています:

id |value
12 |1
24 |3
35 |20

..などをidに100と言います。すべてを選択するクエリがあるかどうか疑問に思いますが、列を3つの等間隔の列に分割し、1番目を1から33、2番目を34-66、67-100(またはそのロジックに近いもの)

期待される出力: IDは気にしないので、必要なものは次のようなものです。

order1|value1  order2|value2 order3|value3
    1 |1           34|80          67|206
    2 |4           35|100         68|207
    3 |6           36|102         69|280
    ...            ....            ...
    33|60          66|201        100|810
4

1 に答える 1

3

これがあなたが探しているものだと思います:

SELECT *
FROM (
      SELECT (@var_count := @var_count + 1) AS order1, value AS value1, 0 order2, 0 value2, 0 order3, 0 value3
      FROM table_name, (SELECT @var_count := 0) a
      LIMIT 33

      UNION ALL

      SELECT 0 order1, 0 value1, (@var_count := @var_count + 1) AS order2, value AS value2, 0 order3, 0 value3
      FROM table_name, (SELECT @var_count := 33) a
      LIMIT 34, 33

      UNION ALL

      SELECT 0 order1, 0 value1, 0 order2, 0 value2, (@var_count := @var_count + 1) AS order3, value AS value3
      FROM table_name, (SELECT @var_count := 66) a
      LIMIT 67, 33
     )a;
于 2012-08-10T10:13:00.020 に答える