2017-08-06 3 views
0

table1をtable2からトップ1の行で次のSQL文で更新しようとしていますが、一致するものがあっても更新されません。table1からtable2を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はすでにdbに存在します。私はまだ上記のエラーが発生します。 –

関連する問題