The SQL:
SELECT  [U].[FirstName]
      , [U].[LastName]
      , [U].[Email]
      , [U].[UserId]
      , [AHI].[Id] AS [AdHocId]
      , [R].[AgentId]
      , [R].[RsvpId]
      , [RC].[AgentId] AS [CertAgentId]
      , [RC].[CertId]
FROM    [dbo].[Users] AS U
        LEFT JOIN [dbo].[AdHocIdentity] AS AHI
            ON [AHI].[Email] = [TUI].[Email]
        LEFT JOIN [dbo].[Rsvp] AS R
            ON [R].[AgentId] = [AHI].[Id]
        LEFT JOIN [dbo].[Certificates] AS RC
            ON [RC].[RsvpId] = [R].[RsvpId]
WHERE   [AHI].[Email] IS NOT NULL
        AND [R].[Completed] = 1
        AND ( [AHI].[Email] LIKE '%@%' )
ORDER BY [AHI].[Email]
The output:
    FirstName   LastName    Email                       UserId                                  AdHocId                                 AgentId                                 RsvpId                                  CertAgentId                             CertId
    Babs        Robespiere  babsrobes@yahoo.com         5950B6AB-E2F0-4923-BA45-7AD843D6937F    71283531-90E6-4570-813B-5B1C706030B8    71283531-90E6-4570-813B-5B1C706030B8    03A99511-7FE1-4D8F-B2FB-59E8302FD531    71283531-90E6-4570-813B-5B1C706030B8    FECE9E84-ECE3-4B78-AC2E-A726CCCC8B13
    Babs        Robespiere  babsrobes@yahoo.com         5950B6AB-E2F0-4923-BA45-7AD843D6937F    5950B6AB-E2F0-4923-BA45-7AD843D6937F    5950B6AB-E2F0-4923-BA45-7AD843D6937F    DD29555E-EE06-4724-8FCD-B825AECDCC82    5950B6AB-E2F0-4923-BA45-7AD843D6937F    9E46C992-4CB4-453E-A4D0-BD16587235CA
The Goal:
I want to update the Certificates (RC) .AgentId (CertAgentId), and the Rsvp (r) .AgentId to match the Users (u) .UserId. It would render output like this:
    FirstName   LastName    Email                       UserId                                  AdHocId                                 AgentId                                 RsvpId                                  CertAgentId                             CertId
    Babs        Robespiere  babsrobes@yahoo.com         5950B6AB-E2F0-4923-BA45-7AD843D6937F    5950B6AB-E2F0-4923-BA45-7AD843D6937F    5950B6AB-E2F0-4923-BA45-7AD843D6937F    03A99511-7FE1-4D8F-B2FB-59E8302FD531    5950B6AB-E2F0-4923-BA45-7AD843D6937F    FECE9E84-ECE3-4B78-AC2E-A726CCCC8B13
    Babs        Robespiere  babsrobes@yahoo.com         5950B6AB-E2F0-4923-BA45-7AD843D6937F    5950B6AB-E2F0-4923-BA45-7AD843D6937F    5950B6AB-E2F0-4923-BA45-7AD843D6937F    DD29555E-EE06-4724-8FCD-B825AECDCC82    5950B6AB-E2F0-4923-BA45-7AD843D6937F    9E46C992-4CB4-453E-A4D0-BD16587235CA
My initial thought was a groan as I contemplated a cursor within a cursor, looping in the outer through all of the Users, and in the inner through all of the Rsvps.
But that'll be ugly, and annoying.
And yes, this is a "1-time" run to update newly imported data - so not a scheduled continuing run.
Update The answer:
/* Update RSVPs */
UPDATE  SRR
SET     [AgentId] = [U].[UserId]
FROM    [dbo].[Users] AS U
        LEFT JOIN [dbo].[AdHocIdentity] AS AHI
            ON [AHI].[Email] = [U].[Email]
        LEFT JOIN [dbo].[Rsvp] AS R
            ON [R].[AgentId] = [AHI].[Id]
WHERE   [AHI].[Email] IS NOT NULL
        AND ( [AHI].[Email] LIKE '%@%' )
        AND ([U].[UserId] != [R].[AgentId]);
/* Update Certs */
UPDATE  SRC
SET     [AgentId] = [U].[UserId]
FROM    [dbo].[Users] AS U
        LEFT JOIN [dbo].[AdHocIdentity] AS AHI
            ON [AHI].[Email] = [U].[Email]
        LEFT JOIN [dbo].[Certificates] AS C
            ON [C].[AgentId] = [AHI].[Id]
WHERE   [AHI].[Email] IS NOT NULL
        AND ( [AHI].[Email] LIKE '%@%' )
        AND ([U].[UserId] != [C].[AgentId]);
 
     
    