Heim  >  Fragen und Antworten  >  Hauptteil

Mariadb-Problemlösung mit CREATE TABLE SELECT von UNION

<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粉115840076P粉115840076417 Tage vor507

Antworte allen(1)Ich werde antworten

  • P粉821231319

    P粉8212313192023-08-03 09:31:45

    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
    

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

    Antwort
    0
  • StornierenAntwort