Ms sql - 按行

时间:2018-03-16 12:27:35

标签: sql sql-server

我有一个表(Table1),其中一些列由数据和一个空列填充。还有另一个表(表2),其中一列包含数据。只有行号相等,没有外键或任何指向该表的链接。我希望Table1的更新空列由Table2列中的数据逐行(table1中的row1到table1中的row1。是否有任何方法可以执行但不使用export to file?可以使用while循环吗?

2 个答案:

答案 0 :(得分:0)

如果我理解正确,您可以使用row_number()

with toupdate as (
      select t1.*, row_number() over (order by (select NULL)) as seqnum
      from table1 t1
     )
update toupdate
    set col = t2.col
    from (select t2.*, row_number() over (order by (select NULL)) as seqnum
          from table2 t2
         ) t2
    where t2.seqnum = t1.seqnum;

答案 1 :(得分:0)

添加这样的rownumbers并加入它们:

WITH CTE_TableA AS(
SELECT ColA, ROW_NUMBER() OVER (PARTITION BY ColA ORDER BY ColA) AS RowA
FROM TableA)

,CTE_TableB AS
SELECT ColB, ROW_NUMBER() OVER (PARTITION BY ColB ORDER BY ColB) AS RowB
FROM TableB

SELECT * FROM CTE_TableA AS A
INNER JOIN CTE_TableB AS B ON A.RowA = B.RowB