0

既にデータが入力されているテーブルを変更した後、既存の外部キー ID に従って新しい列を値で更新するにはどうすればよいですか。

例:

テーブルCarSalesがあるとします。ここでは、個々の車または車の種類ごとに販売数量をグループ化します。

ID | CarID | CarType  | Quantity | SaleDate
1  | 1     | NULL     | 2        | <some date>
2  | 2     | NULL     | 3        | <some date>
3  | 2     | NULL     | 1        | <some date>
4  | NULL  | 'Trucks' | 12       | <some date>
...

CarIDは、テーブルCarsに接続する外部キーです:

CarID | Color  | PistonMotion
1     | 'Blue' | V
2     | 'Gray' | V
3     | 'Pink' | Linear
4     | 'Blue' | Linear
...

次に、販売数量をピストン運動別にグループ化する必要があると判断したため、新しい列PistonMotionCarSalesに追加します。

ID | CarID | CarType  | PistonMotion | Quantity | SaleDate
1  | 1     | NULL     | NULL         | 2        | <some date>
2  | 2     | NULL     | NULL         | 3        | <some date>
3  | 2     | NULL     | NULL         | 1        | <some date>
4  | NULL  | 'Trucks' | NULL         | 12       | <some date>
...

現在、CarSalesはすでにデータでいっぱいですが (数千の行があるとしましょう)、1 回限りのアクションとして、同じ行のCarIDに従って、テーブルの各行のPistonMotionを更新する必要があります。CarIDCarTypeの両方を CarSales テーブルの PistonMotion と共にグループたいので、将来、 Carsテーブルに対して単純に JOIN クエリを実行したくありません。CarIDが NULLの行でPistonMotionを更新できないことはわかっていますが、これは問題ではありません。これらは実際のテーブルではないため、無視してください。

問題は単純です: CarSalesPistonMotionを更新して、同じCarIDが共有されているCarsのPistonMotionと等しくなるようにするには、どのようなクエリが必要ですか?

4

1 に答える 1

2

内部結合による更新が必要です:

UPDATE CS
Set PistonMotion = C.PistonMotion
from CarSales CS inner join Cars C on C.CarID=CS.CarID
于 2013-08-08T13:58:28.423 に答える