Maison > base de données > tutoriel mysql > Comment puis-je mettre à jour une table SQL Server à l'aide de valeurs à partir d'une instruction SELECT?

Comment puis-je mettre à jour une table SQL Server à l'aide de valeurs à partir d'une instruction SELECT?

Patricia Arquette
Libérer: 2025-01-25 05:16:09
original
289 Les gens l'ont consulté

How Can I Update a SQL Server Table Using Values from a SELECT Statement?

Mise à jour des tables de serveur SQL avec des données à partir des instructions sélectionnées

SQL Server permet d'insérer des lignes à l'aide de INSERT...SELECT. Cependant, la mise à jour directe d'un tableau à l'aide d'une instruction SELECT dans la façon dont on pourrait initialement tenter (par exemple, UPDATE Table SET col1, col2 SELECT col1, col2...) n'est pas valide. L'approche correcte consiste à utiliser des sous-requêtes ou des jointures.

Disons que vous devez mettre à jour un tableau avec des valeurs à partir d'une table temporaire. Une tentative incorrecte peut ressembler à ceci:

UPDATE Table SET col1, col2
SELECT col1, col2 
FROM other_table 
WHERE sql = 'cool'
WHERE Table.id = other_table.id
Copier après la connexion

Méthodes correctes:

1. Approche de la sous-requête:

Cette méthode utilise des sous-requêtes pour récupérer les valeurs de mise à jour:

UPDATE Table 
SET col1 = (SELECT col1 FROM other_table WHERE sql = 'cool' AND Table.id = other_table.id),
    col2 = (SELECT col2 FROM other_table WHERE sql = 'cool' AND Table.id = other_table.id)
WHERE EXISTS (SELECT 1 FROM other_table WHERE sql = 'cool' AND Table.id = other_table.id)
Copier après la connexion

La clause EXISTS garantit que les mises à jour ne se produisent que pour les lignes avec des entrées correspondantes dans other_table.

2. Approche basée sur la jointure:

Cette approche exploite A JOIN pour des mises à jour plus efficaces:

UPDATE Table_A
SET Table_A.col1 = Table_B.col1,
    Table_A.col2 = Table_B.col2
FROM Some_Table AS Table_A
INNER JOIN Other_Table AS Table_B ON Table_A.id = Table_B.id
WHERE Table_A.col3 = 'cool'
Copier après la connexion

ce JOIN correspond aux lignes dans Table_A et Table_B basées sur la colonne id, en appliquant des mises à jour uniquement où Table_A.col3 est égal à «cool».

Les sous-requêtes et les jointures fournissent des moyens efficaces de mettre à jour les tables SQL Server en utilisant des données dérivées de SELECT, améliorant la flexibilité et les performances de la manipulation des données.

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 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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal