Maison > Article > base de données > Comment insérer plusieurs lignes d'une sous-requête dans une table MySQL lorsque la sous-requête renvoie plus d'une ligne ?
Insertion de plusieurs lignes d'une sous-requête dans une table MySQL
Pour insérer plusieurs lignes dans une table MySQL à partir d'une sous-requête, il est crucial de s'assurer que la sous-requête ne renvoie qu'une seule ligne. Dans l'extrait de code fourni, la requête d'insertion :
INSERT INTO Results (People, names) VALUES ( (SELECT d.id FROM Names f JOIN People d ON d.id = f.id), ("Henry"), );
tente d'insérer deux valeurs dans les colonnes Personnes et Noms. Cependant, la sous-requête à l'intérieur de la première parenthèse renvoie plusieurs lignes pour d.id. Cela conduit à l'erreur "La sous-requête renvoie plus d'une ligne."
Solution avec chaîne statique combinée
Pour insérer la chaîne statique "Henry" tout en préservant les résultats de la sous-requête, modifiez la requête comme suit :
INSERT INTO Results (People, names) SELECT d.id, 'Henry' FROM Names f JOIN People d ON d.id = f.id
En combinant la chaîne statique "Henry" avec la sous-requête à l'aide d'une virgule, la requête définit explicitement la valeur de la colonne des noms sur "Henry" pour chaque ligne renvoyé par la sous-requête. Cela garantit que la requête insère les résultats de la sous-requête avec la valeur spécifiée dans la table sans rencontrer l'erreur.
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!