選択クエリの結果行をカンマ区切りの文字列に変換したい。153列のテーブルがあります。選択クエリは次のようになります
SELECT * FROM mytable where id = 3
行の結果の 153 列すべてをコンマ区切りの文字列にしたい。MySqlにトリックはありますか?
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;
この関数を使用することはできますがconcat()
、私が知る限り、各列に名前を付ける必要があります。
select concat(col1, ',', col2, ',', col3) from myTable where id=3
テーブルのすべての列を取得するために私が知っている唯一の方法はSHOW COLUMNS FROM table
、これからの結果をクエリに含めることができると思いますが、これまでに行ったことはありません。