Maison >base de données >tutoriel mysql >Comment puis-je récupérer les valeurs de sortie de plusieurs tables lors d'une opération INSERT ?
Insérer dans... Fusionner... Sélectionner : Exploiter les valeurs de sortie de plusieurs tables
Supposons que vous deviez insérer des données dans une cible table et récupère en outre des informations spécifiques à partir d’autres tables impliquées dans l’opération d’insertion. Bien que la clause OUTPUT capture facilement les données de la table insérée, elle ne suffit pas lors de la recherche de valeurs à partir de plusieurs tables. Dans de tels scénarios, l'instruction MERGE apparaît comme une solution puissante.
Pour y parvenir, écartez-vous d'une simple approche INSERT...SELECT et utilisez plutôt une instruction MERGE. Ce changement vous permet d'exploiter les valeurs des données insérées et sources dans la clause OUTPUT.
Voici un exemple illustratif :
MERGE INTO Table3 USING ( SELECT null as col2, 110 as col3, Table1.ID as col4, Table2.Column2 as col5, Table2.Id as col6 FROM Table1 JOIN Table1Table2Link on Table1.ID=Table1Table2Link.Column1 JOIN Table2 on Table1Table2Link.Column2=Table2.ID ) AS s ON 1 = 0 -- Always not matched WHEN NOT MATCHED THEN INSERT (Column2, Column3, Column4, Column5) VALUES (s.col2, s.col3, s.col4, s.col5) OUTPUT Inserted.ID, s.col6 INTO @MyTableVar (insertedId, Table2Id);
Dans cette instruction MERGE, une table temporaire ou une variable de table (@MyTableVar) est utilisé pour capturer à la fois Inserted.ID (la colonne d'identité de Table3) et Table2.ID. La condition d'égalité inexistante dans la clause ON (1 = 0) garantit que toutes les lignes entrantes sont toujours prises en compte pour l'insertion et la récupération des données.
Ainsi, l'instruction MERGE insère efficacement les données dans la Table3 et remplit simultanément @MyTableVar avec les valeurs souhaitées des tables insérées et source. Cela vous permet de travailler avec les données insérées en conjonction avec les informations associées provenant d'autres tables, élargissant considérablement l'utilité des opérations d'insertion.
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!