SQL lors de la boucle avec le Temp Table
J'ai besoin de créer une table temporaire et ensuite mettre à jour la table d'origine. Création de la table temporaire n'est pas un problème.
create table #mod_contact
(
id INT IDENTITY NOT NULL PRIMARY KEY,
SiteID INT,
Contact1 varchar(25)
)
INSERT INTO #mod_contact (SiteID, Contact1)
select r.id, r.Contact from dbo.table1 r where CID = 142
GO
Maintenant, j'ai besoin d'une boucle sur le tableau et mise à jour de r de.contact = SiteID + r.contact
Je n'ai jamais utilisé une boucle while avant et ne semble pas faire tout les exemples que j'ai vu à l'œuvre.
- ne pas utiliser une boucle.
- J'ai corrigé il r.contact = SiteID + r.contact Désolé.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez le faire de multiples façons, mais je pense que vous êtes à la recherche d'un moyen à l'aide d'un curseur.
Un curseur est une sorte de pointeur dans un tableau, qui, lorsqu'il incrémenté points à l'enregistrement suivant. ( c'est plus ou moins analogeous une boucle suivante )
pour utiliser un curseur, vous pouvez effectuer les opérations suivantes:
Ce n'est pas le moyen le plus efficace pour obtenir ce fait, mais je pense que c'est ce que vous cherchions.
Espère que cela aide.
Utiliser une approche fondée sur les - pas besoin de boucle (d'après le peu de détails):
Votre cerveau veut faire ceci:
SQL est fixée en fonction et vous permet de prendre tout un tas de dossiers et de les mettre à jour en une seule commande. La beauté de ceci est que vous pouvez utiliser le
WHERE
clause de filtrer certaines lignes qui ne sont pas nécessaires.ON m.id=r.id
-- Vous pensez que c'est un moyen fiable de la mise à jour de la table d'origine?m.id
est l'IDENTITÉ de la colonne de la table temporaire etr.id
cartes àSiteID
dans la table temporaire. Ressemble laisser-aller, à moi, mais je suis prêt à être corrigé 😉Comme d'autres l'ont mentionné, à apprendre à faire des boucles dans SQL est généralement une mauvaise idée; cependant, puisque vous êtes à essayer de comprendre comment faire quelque chose, voici un exemple:
Pourquoi utiliser une table temporaire à tous? Votre
CID
colonne n'apparaît pas dans la table temporaire, donc je ne vois pas comment vous pouvez réussir à mettre à jour la table d'origine à l'aide deSiteID
, à moins qu'il n'y a qu'une seule ligne oùCID = 142
dans lequel à l'aide d'une table temporaire est certainement exagéré.Tu peux faire ça:
Voici un exemple similaire qui peut aider à vous rendre à "penser en SQL':
En supposant
A
etB
sont du même type, ce serait de réussir à échanger leurs valeurs.Essayez celui-ci: