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 ?

Comment insérer plusieurs lignes d'une sous-requête dans une table MySQL lorsque la sous-requête renvoie plus d'une ligne ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-02 15:08:29144parcourir

How to Insert Multiple Rows from a Subquery into a MySQL Table When the Subquery Returns More Than One Row?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn