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?
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!