Maison > base de données > tutoriel mysql > Comment puis-je déplacer efficacement des données entre des tables SQL en fonction de la correspondance conditionnelle ?

Comment puis-je déplacer efficacement des données entre des tables SQL en fonction de la correspondance conditionnelle ?

DDD
Libérer: 2024-12-15 20:50:10
original
122 Les gens l'ont consulté

How Can I Efficiently Move Data Between SQL Tables Based on Conditional Matching?

Déplacement de données entre des tables avec correspondance conditionnelle

Vous pouvez transférer efficacement des données d'une table à une autre en fonction de critères spécifiques à l'aide d'instructions SQL. Dans ce cas, vous souhaitez déplacer toutes les lignes correspondantes du tableau 1 vers le tableau 2 où le nom d'utilisateur est égal à « X » et le mot de passe est égal à « X ».

Approche basée sur les transactions

La méthode la plus fiable consiste à utiliser une transaction pour garantir que les deux opérations (insertion dans le tableau 2 et suppression du tableau 1) se produisent comme une seule unité de travail. Les transactions garantissent l'intégrité des données en garantissant que les deux opérations réussissent ou qu'aucune des deux n'est appliquée.

Déclaration SQL

L'instruction SQL suivante utilise une transaction pour atteindre votre objectif :

BEGIN TRANSACTION;
INSERT INTO Table2 (column1, column2, ...)
SELECT column1, column2, ...
FROM Table1
WHERE username = 'X' AND password = 'X';

DELETE FROM Table1
WHERE username = 'X' AND password = 'X';

COMMIT;
Copier après la connexion

Explication

  • Le DÉBUT TRANSACTION ;
  • L'instruction INSERT copie les lignes correspondantes du tableau 1 vers le tableau 2.
  • L'instruction DELETE supprime les lignes correspondantes du tableau 1. La déclaration finalise la transaction et rend les modifications permanentes.
Considérations supplémentaires

Si vous souhaitez empêcher l'insertion de nouvelles lignes correspondantes dans la table 1 pendant la transaction, vous pouvez ajouter une condition supplémentaire à l'instruction INSERT à l'aide de l'opérateur NOT EXISTS :

Cela garantit que seules les lignes correspondantes uniques sont inséré dans le tableau2.
INSERT INTO Table2 (column1, column2, ...)
SELECT column1, column2, ...
FROM Table1
WHERE username = 'X' AND password = 'X' AND NOT EXISTS (SELECT 1 FROM Table2 WHERE username = 'X' AND password = 'X');
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal