Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Zaktualizuj zapytanie w SQL Server przez JOINS

Ponieważ identyfikator użytkownika jest taki sam we wszystkich wierszach, otrzymujesz tę samą wartość dla wieku.
Można to rozwiązać za pomocą CTE , tak:

;with cte as 
(
  select id, userid, age, ROW_NUMBER() OVER(order by id) rn
  FROM #tempMock
)
UPDATE t1
SET    t1.age = t2.age
FROM   #temp t1
INNER JOIN cte t2 ON t1.userid = t2.userid and t1.id = t2.rn+1;

zobacz skrzypce tutaj



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nieoczekiwane zachowanie @@rowcount wewnątrz UDF w MS SQL 2019

  2. Łączenie LIKE z IN w SQL

  3. Konwersja z UniqueIdentifier do BigInt iz powrotem?

  4. Zapytanie SQL, które pobiera wszystkie kody pocztowe (adresy) w promieniu 20 mil od danego kodu pocztowego

  5. Jak zwrócić ciąg w odwrotnej kolejności za pomocą SQL Server – REVERSE()