SQL SELECT JOIN: すべての列に 'prefix.*' というプレフィックスを付けることは可能ですか? 質問する

SQL SELECT JOIN: すべての列に 'prefix.*' というプレフィックスを付けることは可能ですか? 質問する

SQL でこれが可能かどうか疑問に思っています。テーブル A とテーブル B の 2 つのテーブルがあり、テーブル A で選択し、テーブル B で結合するとします。

SELECT a.*, b.* FROM TABLE_A a JOIN TABLE_B b USING (some_id);

テーブル A に列 'a_id'、'name'、'some_id' があり、テーブル B に 'b_id'、'name'、'some_id' がある場合、クエリは列 'a_id'、'name'、'some_id'、'b_id'、'name'、'some_id' を返します。すべての列を個別にリストせずに、テーブル B の列名にプレフィックスを付ける方法はありますか? 次のコードと同等です。

SELECT a.*, b.b_id as 'b.b_id', b.name as 'b.name', b.some_id as 'b.some_id'
FROM TABLE_A a JOIN TABLE_B b USING (some_id);

ただし、前述のように、すべての列をリストするわけではないので、次のようになります。

SELECT a.*, b.* as 'b.*'
FROM TABLE_A a JOIN TABLE_B b USING (some_id);

基本的に、「b.* によって返されるすべての列に 'something' というプレフィックスを付ける」ということです。これは可能ですか、それとも運が悪いのでしょうか?

編集

などを使用しないようSELECT *にというアドバイスは有効なアドバイスですが、私の状況には関係がないので、目の前の問題に集中してください。つまり、結合内のテーブルのすべての列名にプレフィックス (SQL クエリで指定された定数) を追加することは可能でしょうか?

私の最終的な目標は、結合を使用して 2 つのテーブルで を実行しSELECT *、結果セットで取得した列の名前から、どの列がテーブル A から取得され、どの列がテーブル B から取得されたかを判断できるようにすることです。繰り返しますが、列を個別にリストする必要はなく、 を実行できるようにする必要がありますSELECT *

ベストアンサー1

質問に対する答えは「いいえ」のようですが、使用できるハックの 1 つは、ダミー列を割り当てて各新しいテーブルを区切ることです。これは、Python や PHP などのスクリプト言語で列のリストの結果セットをループする場合に特に有効です。

SELECT '' as table1_dummy, table1.*, '' as table2_dummy, table2.*, '' as table3_dummy, table3.* FROM table1
JOIN table2 ON table2.table1id = table1.id
JOIN table3 ON table3.table1id = table1.id

これはあなたの質問に正確に答えるものではないことは承知していますが、あなたがプログラマーであれば、これは重複する列名を持つテーブルを分離する優れた方法です。

おすすめ記事