2012-04-01 19 views
5

私は私のシナリオを簡素化します - 私は、これら2つのテーブルを持っている:MySQLでワイルドカード選択列に名前を付けるには?

table_A - id int, id_table_B_one int, id_table_B_two int, name varchar(30) 
table_B - id int, name varchar(30), description varchar(30) 

をそれから私はこのクエリを持っている:

SELECT 
table_A.id, table_A.name, table_B_one.*, table_B_two.* 
FROM 
table_A 
LEFT JOIN table_B table_B_one ON table_A.id_table_B_one = table_B.id 
LEFT JOIN table_B table_B_two ON table_A.id_table_B_two = table_B.id 

私の問題は、私は同じ名前を持つ3つの列を取得することである(idと名)。私は1つの列のエイリアスを指定するために 'AS'キーワードを使用できることを知っています。ただし、選択した各列を指定する必要がありますが、「*」ワイルドカードを使用する必要があります。

「*」ワイルドカードでエイリアス列名を設定する方法はありますか? 。このような何か:

... table_B_one * table_B_one_ AS * ...

+2

なぜワイルドカードを使用する必要がありますか?あなたが見たいと思っている列をすべて綴ることはできませんか? – SingleNegationElimination

+0

'*'や 'table。*'の代わりに、あなたが選択している列を明示的に指定することをお勧めします。 'SELECT'文でそれらをすべてリストします。 –

+0

TokenMacGuy:SQLクエリーが実際に動的に生成されるため、必要です。私の質問で述べたように、この質問のために非常に簡略化されていますが、私の場合のクエリとその使用法はずっと複雑です – Frodik

答えて

2

いいえ、セットの別名は、ワイルドカードを使用した方法はありません。あなたは明白である必要があります。

SQLが動的に生成された場合、必要なエイリアスをすべて明示的に表示するコストは非常に小さくなります。SQLを生成するコードに正しいエイリアスを生成するだけです。

エイリアスを明示すると、コードの可読性が向上します。これはエイリアスのためのものです。しかし、私は不思議です:あなたのSQLが動的に生成されている場合、エイリアスをなぜ必要としますか?

関連する問題