我正在尝试使用带有以下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)
答案 0 :(得分:1)
我会在这里使用更新联接,但在这种情况下,我们可以加入子查询,查找每个部分的第一个单价,首先按照id
中table2
列的顺序排序。
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