Maison  >  Questions et réponses  >  le corps du texte

Résolution de problèmes Mariadb à l'aide de CREATE TABLE SELECT d'UNION

<p>Je travaille sur un script PHP qui contient six UNION SELECT, et dans le script, cette commande fonctionne très bien. Cette commande fonctionne également correctement lorsqu'elle est exécutée à partir d'un client SQL. Cependant, lorsque j'essaie de placer l'instruction SELECT dans CREATE TABLE mytable SELECT, j'obtiens le message d'erreur suivant : </p> <pre class="brush:php;toolbar:false;">Nom de colonne incorrect ''</pre> <p>Dans cinq des six fragments UNION SELECT, il existe un nom de colonne nommé '', qui est utilisé comme espace réservé lors du remplissage des données dans les parties suivantes du script. Mais dans l'une des UNION, la même position est une colonne varchar(32). <br /><br />Il semble que l'existence d'une colonne "anonyme" n'ait pas d'importance dans l'exécution normale de la commande. Mais dans la version CREATE TABLE, cela n'aime pas ça. <br /><br />Pourquoi SELECT et CREATE TABLE SELECT ont-ils des règles différentes pour les noms de colonnes d'union ? </p><p><br /></p>
P粉115840076P粉115840076467 Il y a quelques jours548

répondre à tous(1)je répondrai

  • P粉821231319

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

    Les tableaux ne peuvent pas contenir de noms de colonnes vides ou manquants, contrairement aux ensembles de résultats. L'instruction CREATE TABLE SELECT obtient les noms de colonnes de la table à partir du jeu de résultats de l'instruction SELECT. Par conséquent, vous devez vous assurer que chaque colonne du jeu de résultats porte un nom, soit dérivé d'une colonne d'une table, soit spécifié via un alias AS. Par exemple,

    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
    

    s'applique à l'instruction CREATE TABLE, tandis que

    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
    

    Non applicable car il n'attribue pas de nom de colonne alias à la première colonne.

    répondre
    0
  • Annulerrépondre