2012-04-01 23 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和名稱)。我知道我可以使用'AS'關鍵字來指定一個列的別名。但是,我需要指定每個選定的列,但我必須使用'*'通配符。

有沒有什麼辦法可以用'*'通配符設置別名列名?事情是這樣的:

... table_B_one * AS table_B_one_ * ...

+2

爲什麼你需要使用通配符?難道你不能拼出你想看到的所有列嗎? – SingleNegationElimination 2012-04-01 18:11:18

+0

而不是'*'或'table。*',最好清楚地說明您正在選擇的列。將它們全部列在'SELECT'語句中。 – 2012-04-01 18:18:26

+0

TokenMacGuy:我需要,因爲SQL查詢實際上是動態生成的。正如我在我的問題中指出的 - 這是非常簡化的目的這個問題,但查詢和它的用法在我的情況是更復雜 – Frodik 2012-04-01 18:21:55

回答

2

沒有,沒有使用通配符的方式設置別名。你需要明確。

如果您的SQL是動態生成的,那麼對所有必要的別名進行顯式計算的成本非常小 - 只需將生成正確的別名放入生成SQL的代碼即可。

明確使用別名將有助於代碼的可讀性 - 這就是別名的可讀性。然而,我很好奇:如果你的SQL是動態生成的,爲什麼你想要別名?