Dans une procédure stockée je besoin de boucler le tableau suivant:Dans une procédure stockée comment table de boucle peut vous A et puis mettre à jour le tableau B
SELECT *
FROM dbo.UsersInRoles
INNER JOIN Application_Users ON UsersInRoles.AppUserID = Application_Users.AppUserID
WHERE (UsersInRoles.ApplicationId = @ApplicationId)
AND (UsersInRoles.RoleId = @CurrentRoleId)
AND (Application_Users.LastLogin < @StartDate)
Et pour chaque enregistrement qui est en boucle j'effectuer cette mise à jour :
UPDATE UsersInRoles
SET UsersInRoles.RoleId = @DenyRoleId
WHERE (UsersInRoles.ApplicationId = @ApplicationId)
AND (UsersInRoles.RoleId = @CurrentRoleId)
S'il existe une meilleure façon d'effectuer cela, alors je suis ouvert aux suggestions. Fondamentalement, la première requête fait un filtre basé sur le INNER JOIN
pour déterminer quels enregistrements doivent être mis à jour. Ensuite, ces enregistrements filtrés sont mis en boucle et mis à jour avec un nouveau RoleID
.
répondu à https://stackoverflow.com/questions/1604091/update-a-table-using-join-in-sql-server –
Vous devez faire un paradigme changer dans la façon dont vous regardez les données. Looping est horriblement inefficace. Vous devez changer votre état d'esprit de penser à ce que vous devez faire à une rangée et penser plutôt à ce que vous devez faire à une colonne. –