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
Patricia Arquetteoriginal
2025-01-25 05:16:09291parcourir

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:

<code class="language-sql">UPDATE Table SET col1, col2
SELECT col1, col2 
FROM other_table 
WHERE sql = 'cool'
WHERE Table.id = other_table.id</code>

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:

<code class="language-sql">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)</code>

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:

<code class="language-sql">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'</code>

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:
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