Insérer toutes les colonnes dans la table cible à l'aide de INSERT INTO...SELECT
Vous rencontrez des difficultés pour copier les données de this_table vers this_table_archive à l'aide d'un Instruction INSERT INTO avec sélection de caractère générique (*). Résolvons le problème et trouvons une solution efficace.
L'erreur réside dans l'utilisation de (*) pour sélectionner toutes les colonnes sans spécifier les noms des colonnes. La syntaxe correcte, telle que détaillée dans le manuel MySQL, nécessite que vous listiez explicitement les noms de colonnes.
Voici le code correct :
INSERT INTO this_table_archive (col1, col2, ..., coln) SELECT col1, col2, ..., coln FROM this_table WHERE entry_date < '2011-01-01 00:00:00';
Remplacez col1, col2, ..., coln avec les noms de colonnes réels de votre table.
En ce qui concerne la colonne id, si les deux tables ont un identifiant à incrémentation automatique et que des données existent déjà dans l'une ou l'autre table, vous pouvez envisager en omettant l'identifiant de la liste des colonnes de votre requête pour éviter d'éventuels conflits de clés en double.
Pour une table cible vide, cette omission ne posera aucun problème. Cependant, pour les tables contenant des données, l'exclusion de la colonne id garantira la génération de nouveaux identifiants uniques pour les lignes copiées.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!