使用top1行更新table2中的table1

时间:2017-08-06 03:24:24

标签: sql asp.net sql-server

我正在尝试使用带有以下SQL语句的前1行更新table1中的table1,但即使匹配存在,也不会更新任何行。

表1

partno avprice
--------------
P001    0
P002    0
P003    0
P004    0
P005    0

表2

id(PK)  partno  unitprice
-------------------------
1       P001       0.65
2       P001       0.90
3       P003       1.20
4       P005       0.25
5       P005       1.35

SQL

update table1 
set avgprice = (select top 1 unitprice 
                from table2 
                left join table1 on table2.partno = table1.partno 
                order by tabl2.id)

1 个答案:

答案 0 :(得分:1)

我会在这里使用更新联接,但在这种情况下,我们可以加入子查询,查找每个部分的第一个单价,首先按照idtable2列的顺序排序。

UPDATE t1
SET t1.avgprice = t2.unitprice
FROM table1 t1
INNER JOIN
(
    SELECT partno, unitprice,
        ROW_NUMBER() OVER (PARTITION BY partno ORDER BY id) rn
    FROM table2
) t2
    ON t1.partno = t2.partno
WHERE t2.rn = 1