2017-08-02 5 views
0

J'apprécierais que quelqu'un puisse m'expliquer comment le code ci-dessous fonctionne en interne. Par exemple, comment l'ordre des conditions est évalué.Explication de la requête SQL Update

update br set ScannedId = 
    (
    select top 1 Id from table1 sp (nolock) 
    inner loop join table2 cp (nolock) ON (sp.CPId = cp.CPID) 
    inner loop join table3 c (nolock) ON (cp.CID = c.CId and c.endDate >= sp.CreatedDate and c.startDate <= sp.CreatedDate) `enter code here` 
    inner loop join table4 cc (nolock) ON (c.CChannelID =`enter code here` cc.CChannelID) 
    where (sp.UserId is null or sp.UserId = br.UserId) 
      and ((sp.Email = br.UserEmail)    
       or (sp.fName like br.UFName + '%' and sp.LName like br.ULName + '%' and sp.sHash = br.uHash) 
       or (sp.fName like br.UFName + '%' and sp.Addrs = br.UOAddrs and sp.ZC = br.UOZ and sp.sHash = br.uHash)) 
     order by cc.Rank, c.Rank, cp.Rank, sp.EDate desc, sp.CreatedDate desc 
    ) 
    from channelnewlogic br where userId = 3637217 
+0

possible dupe https://stackoverflow.com/questions/30749913/qui-performe-premier-lorsque-clause-ou-join-clause – gordy

Répondre

0

lignes dans channelnewlogic obtiennent leurs valeurs de la colonne ScannedId mis à jour en fonction du résultat de la sélection intérieure.