Mariadb-Problemlösung mit CREATE TABLE SELECT von UNION
P粉115840076
2023-08-02 11:25:48
<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>
Tables不能包含空白或缺失的列名,而结果集可以。而CREATE TABLE SELECT语句会从SELECT语句的结果集中获取表的列名。因此,您需要确保结果集的每个列都有一个名称,可以是从某个表的列派生出来的,也可以是通过AS别名指定的。例如,
适用于CREATE TABLE语句,而
不适用,因为它没有给第一列分配一个别名列名。