0

行番号で2つのテーブルを結合できる次のクエリがあります。これを変更して、ランダム名テーブルのランダム名でサブスクライバーテーブルを更新しようとしています。

select fo.*, so.*
from (select *, 
              row_number() over (order by FirstName) as rn
      from randomnames
) fo
join (select *,
             row_number() over (order by ID) as rn
       from subscribers) so on fo.rn = so.rn

動作させるために次のように更新しました

update subscribers set 
FirstName = fo.Firstname,
LastName = fo.LastName
from
 (select *, 
              row_number() over (order by firstname) as rn
      from _randomnames
) fo
join (select *,
             row_number() over (order by ID desc) as rn
       from subscribers) so on fo.rn = so.rn

       where so.ID = subscribers.ID
4

1 に答える 1

0

次のクエリを試してください。

;WITH CTE AS
(
    SELECT *, ROW_NUMBER() OVER (ORDER BY ID) AS rn
    FROM subscribers
)
UPDATE so
SET so.[Name] = fo.[Name]
FROM CTE so
INNER JOIN (SELECT *, ROW_NUMBER() OVER (ORDER BY FirstName) AS rn
            FROM randomnames) fo
ON fo.rn = so.rn
于 2012-06-01T17:17:57.033 に答える