2

選択クエリの結果行をカンマ区切りの文字列に変換したい。153列のテーブルがあります。選択クエリは次のようになります

SELECT * FROM mytable where id = 3

行の結果の 153 列すべてをコンマ区切りの文字列にしたい。MySqlにトリックはありますか?

4

2 に答える 2

11

GROUP_CONCAT関数を使用してそれを行うことができます。

SELECT GROUP_CONCAT(col1, col2,..coln) FROM my_table;

編集:

次のクエリですべての列名を取得し、関数でそれを置き換えCONCAT_WSます::

SELECT GROUP_CONCAT(COLUMN_NAME) 
FROM information_schema.COLUMNS 
WHERE TABLE_NAME = 'my_table';

SELECT CONCAT_WS(',', col1, col2, ..., coln) 
FROM my_table;

または試してみてください:

SET @query1 = CONCAT('
        SELECT CONCAT_WS(",", ',(SELECT GROUP_CONCAT(COLUMN_NAME)
                                 FROM information_schema.COLUMNS
                                 WHERE TABLE_NAME = 'my_table'),')
        FROM    tablew_name'
        );
PREPARE stmt FROM @query1; EXECUTE stmt; DEALLOCATE PREPARE stmt;
于 2012-08-01T11:24:22.503 に答える
0

この関数を使用することはできますがconcat()、私が知る限り、各列に名前を付ける必要があります。

select concat(col1, ',', col2, ',', col3) from myTable where id=3

テーブルのすべての列を取得するために私が知っている唯一の方法はSHOW COLUMNS FROM table、これからの結果をクエリに含めることができると思いますが、これまでに行ったことはありません。

于 2012-08-01T11:24:38.413 に答える