Mariadb-Problemlösung mit CREATE TABLE SELECT von UNION
P粉115840076
P粉115840076 2023-08-02 11:25:48
0
1
555
<p>Ich arbeite an einem PHP-Skript, das sechs UNION SELECTs enthält, und innerhalb des Skripts läuft dieser Befehl einwandfrei. Dieser Befehl funktioniert auch gut, wenn er von einem SQL-Client ausgeführt wird. Wenn ich jedoch versuche, die SELECT-Anweisung in CREATE TABLE mytable SELECT einzufügen, erhalte ich die folgende Fehlermeldung: </p> <pre class="brush:php;toolbar:false;">Falscher Spaltenname ''</pre> <p>In fünf der sechs UNION SELECT-Fragmente gibt es einen Spaltennamen mit dem Namen '', der als Platzhalter beim Ausfüllen von Daten in nachfolgenden Teilen des Skripts verwendet wird. Aber in einer der UNIONs ist die gleiche Position eine varchar(32)-Spalte. <br /><br />Es scheint, dass die Existenz einer „anonymen“ Spalte bei der normalen Ausführung des Befehls keine Rolle spielt. Aber in der CREATE TABLE-Version gefällt das nicht. <br /><br />Warum haben SELECT und CREATE TABLE SELECT unterschiedliche Regeln für Vereinigungsspaltennamen? </p><p><br /></p>
P粉115840076
P粉115840076

Antworte allen(1)
P粉821231319

Tables不能包含空白或缺失的列名,而结果集可以。而CREATE TABLE SELECT语句会从SELECT语句的结果集中获取表的列名。因此,您需要确保结果集的每个列都有一个名称,可以是从某个表的列派生出来的,也可以是通过AS别名指定的。例如,

SELECT 'one' AS tablename, cola, colb, colc FROM table_one
 UNION ALL
SELECT 'two',              cola, colb, colc FROM table_two
 UNION ALL
SELECT 'three',            cola, colb, colc FROM table_three

适用于CREATE TABLE语句,而

SELECT 'one',   cola, colb, colc FROM table_one
 UNION ALL
SELECT 'two',   cola, colb, colc FROM table_two
 UNION ALL
SELECT 'three', cola, colb, colc FROM table_three

不适用,因为它没有给第一列分配一个别名列名。

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage