2012-04-01 9 views
5

Ich werde mein Szenario vereinfachen - Ich habe diese zwei Tabellen:Wie kann ich Wildcard-Select-Spalten in MySQL benennen?

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) 

Dann habe ich diese Anfrage:

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 

Mein Problem ist, dass ich 3 Spalten mit dem gleichen Namen bekommen (id und Name). Ich weiß, dass ich das Schlüsselwort 'AS' verwenden kann, um den Alias ​​einer Spalte anzugeben. Allerdings müsste ich jede ausgewählte Spalte angeben, aber ich muss Wildcard '*' verwenden.

Gibt es eine Möglichkeit, wie kann Alias-Spaltenname mit '*' Wildcard gesetzt werden? Etwas wie folgt aus:.

... table_B_one * AS table_B_one_ * ...

+2

Warum müssen Sie Platzhalter verwenden? Können Sie nicht einfach alle Spalten buchstabieren, die Sie sehen möchten? – SingleNegationElimination

+0

Anstelle von '*' oder 'table. *' Sollten Sie die Spalten, die Sie auswählen, am besten explizit angeben. Listen Sie alle in der SELECT-Anweisung auf. –

+0

TokenMacGuy: Ich muss, weil die SQL-Abfrage tatsächlich dynamisch generiert wird. Wie ich in meiner Frage sagte - es ist sehr vereinfacht für den Zweck dieser Frage, aber Abfrage und seine Verwendung in meinem Fall ist viel komplexer – Frodik

Antwort

2

Nein, ist es nicht eine Möglichkeit Satz Aliasnamen einen Platzhalter verwenden. Sie müssen explizit sein.

Wenn Ihr SQL dynamisch generiert wird, dann ist die Kosten (zu Ihnen), mit allen notwendigen Aliasen explizit zu sein, extrem klein - setzen Sie einfach die Generierung der korrekten Aliase in den Code, der das SQL generiert.

Die explizite Verwendung der Aliase wird die Lesbarkeit des Codes verbessern - wofür Aliase da sind. Aber ich bin neugierig: Warum wollen Sie Aliase, wenn Ihre SQL dynamisch generiert wird?

Verwandte Themen