0

1つの列の場合、それは単純です。

SELECT myColumn as 'My super sweet column', yourColumn FROM myTable;
# Results in:
# +-----------------------+------------+
# | My super sweet column | yourColumn |
# +-----------------------+------------+
# |                     1 |          0 |
# +-----------------------+------------+

どうすれば...のようなことを達成できますか?

SELECT * as 'Random_'* FROM myTable;
# To result in:
# +-----------------+-------------------+
# | Random_myColumn | Random_yourColumn |
# +-----------------+-------------------+
# |               1 |                 0 |
# +-----------------+-------------------+
4

3 に答える 3

2

あなたが望むことをするための合理的な方法はありません。すべての列名とそのエイリアスをリストする必要があります。

于 2012-06-27T13:15:08.423 に答える
1

次のコマンドを実行します。

show columns from yourTable;

このクエリの結果セットの各行は列を表し、この結果セットの最初の列は列名です。これを知っていると、テーブルの列を順番に処理して、テーブルの列の名前を取得できます。テーブルの列の名前を使用して、クエリを生成できます。

すべてのテーブルに対してこの種のクエリを生成する場合は、

show tables;

そして、yourTableコマンドからshow columnsを実行して各テーブルを処理します(yourTableをテーブル名に置き換えます)。

于 2012-06-27T13:36:07.430 に答える
0

情報スキーマテーブルを使用して、各列の名前を手動で変更するクエリを作成できます

SELECT CONCAT('SELECT ', GROUP_CONCAT(
         '`',        REPLACE('`', '``', COLUMN_NAME), '` AS
          `Random_', REPLACE('`', '``', COLUMN_NAME), '`'
       ), ' FROM myTable') INTO @qry
FROM   INFORMATION_SCHEMA.COLUMNS
WHERE  TABLE_SCHEMA = 'myDB' AND TABLE_NAME = 'myTable';

この時点で@qry、文字列が含まれています(読みやすくするために追加した空白を除く)。

SELECT `myColumn`   AS `Random_myColumn`,
       `yourColumn` AS `Random_yourColumn`
FROM   myTable

その後、実行の準備をすることができます。

PREPARE stmt FROM @qry;

実行:

EXECUTE stmt;

そして最後に割り当てを解除しました:

DEALLOCATE PREPARE stmt;

ただし、これを実行しようとしているという事実は、のスキーマがアプリケーションに認識されていないことを示しmyTableています(つまり、動的である)。これは通常は悪い習慣であり、データ構造を正規化する必要があることを示している可能性があります。

さらに、アプリケーションが希望する方法で列を参照できるため、結果セットの列の名前が非常に重要である理由がよくわかりません。

于 2012-06-27T13:35:48.483 に答える