2017-08-06 69 views
0

我想從table2更新table1與前面的1行與下面的SQL語句,但沒有行更新即使有匹配。從table2更新table1與top1行

表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

我會用更新加入這裏,但在這種情況下,我們可以加入到找到fi的子查詢每個零件的第一個單位價格,首先按table2id欄的順序排列。

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 
+0

錯誤:'t1'附近的語法不正確。期待SET。 –

+0

我沒有看到我的語法有問題。看看你是否可以讓我的查詢工作。 –

+0

我剛剛將sql複製到sql server 2008 r2中的查詢窗口。 table1和table2已經存在於數據庫中。我仍然得到上述錯誤。 –

相關問題