sql >> Database teknologi >  >> RDS >> Sqlserver

SQL:Erstat en del af en kolonne på flere rækker baseret på anden tabel

Her er en enkelt-sætning, ikke-markør metode, der gør brug af en CTE:

WITH CTE(iteration, page_id, content) AS ( SELECT 0, P.page_id, REPLACE(P.content, M1.old_value, M1.new_value) FROM Pages P INNER JOIN Moving M1 ON P.content LIKE '%' + M1.old_value + '%' WHERE NOT EXISTS (SELECT * FROM Moving M2 WHERE P.content LIKE '%' + M2.old_value + '%' AND M2.moving_id < M1.moving_id) UNION ALL SELECT CTE.iteration + 1, CTE.page_id, REPLACE(CTE.content, M3.old_value, M3.new_value) FROM CTE INNER JOIN Moving M3 ON CTE.content LIKE '%' + M3.old_value + '%' WHERE NOT EXISTS (SELECT * FROM Moving M4 WHERE CTE.content LIKE '%' + M4.old_value + '%' AND M4.moving_id < M3.moving_id) ) UPDATE P2 SET content = CTE1.content FROM Pages P2 INNER JOIN CTE CTE1 ON CTE1.page_id = P2.page_id AND NOT EXISTS (SELECT * FROM CTE CTE2 WHERE page_id = P2.page_id AND CTE2.iteration > CTE1.iteration)

  1. Sådan aktiverer du sporing i oracle apps r12

  2. Indsættelseseffektivitet af en stor mængde data med SQL

  3. Tjek om et objekt er en lagret procedure ved at bruge OBJECTPROPERTY() i SQL Server

  4. Sådan installeres MySQL gem på Mac OS X