Insertion de valeurs dans une table à partir d'une sous-requête non scalaire
Dans SQL Server, insertion de valeurs dans une table basée sur une sous-requête qui renvoie plusieurs résultats peuvent être difficiles. Considérons le scénario suivant :
Vous disposez de deux tableaux :
Vous souhaitez insérer des lignes dans le tableau prix avec des valeurs spécifiques pour le Colonnes group, id et price, où les valeurs id sont dérivées d'une sous-requête qui sélectionne les ID correspondants dans articletableau.
Incorrect Approche :
Essayer d'utiliser une sous-requête avec plusieurs résultats comme valeur d'une colonne dans une instruction INSERT peut entraîner une erreur, comme le démontre l'instruction SQL incorrecte suivante :
INSERT INTO prices (group, id, price) VALUES (7, (select articleId from article WHERE name LIKE 'ABC%'), 1.50);
Solution correcte :
Pour résoudre ce problème, utilisez un Instruction SELECT pour récupérer les valeurs souhaitées et les insérer dans la table cible. Attribuez les valeurs constantes pour les colonnes group et price directement dans l'instruction SELECT :
insert into prices (group, id, price) select 7, articleId, 1.50 from article where name like 'ABC%';
Dans cette instruction, la sous-requête renvoie les ID d'article correspondant aux critères de nom spécifiés et les valeurs constantes 7 et 1,50 sont explicitement attribuées à l'article. groupe et prix, respectivement.
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!