簡體   English   中英

如何根據另一個表更新表值

[英]How to update table value based on another table

我有一個名為Product的表,它的數據和表結構如下所示,

+-----------+-------------+-----------+
| ProductId | ProductName | SortValue |
+-----------+-------------+-----------+
| 1157      | ABC         | 7         |
+-----------+-------------+-----------+
| 1156      | DEF         | 3         |
+-----------+-------------+-----------+
| 1155      | GHI         | 4         |
+-----------+-------------+-----------+
| 1154      | JKL         | 2         |
+-----------+-------------+-----------+
| 1153      | MNO         | 1         |
+-----------+-------------+-----------+
| 1152      | PQR         | 5         |
+-----------+-------------+-----------+
| 1151      | STU         | 6         |
+-----------+-------------+-----------+

我有另一個名為LocationProdut的表,它是參考產品表和位置表,對於每個位置productid都有自己的排序值。示例數據和表結構如下,

+--------------+-------------+-----------+
| fkLocationId | fkProductId | Sortvalue |
+--------------+-------------+-----------+
| 19           | 1157        | 1         |
+--------------+-------------+-----------+
| 19           | 1156        | 2         |
+--------------+-------------+-----------+
| 19           | 1155        | 3         |
+--------------+-------------+-----------+
| 19           | 1154        | 4         |
+--------------+-------------+-----------+
| 19           | 1153        | 5         |
+--------------+-------------+-----------+
| 19           | 1152        | 6         |
+--------------+-------------+-----------+
| 19           | 1151        | 7         |
+--------------+-------------+-----------+
| 20           | 1155        | 3         |
+--------------+-------------+-----------+
| 20           | 1154        | 4         |
+--------------+-------------+-----------+
| 20           | 1153        | 5         |
+--------------+-------------+-----------+
| 20           | 1152        | 6         |
+--------------+-------------+-----------+
| 20           | 1151        | 7         |
+--------------+-------------+-----------+
| 21           | 1155        | 3         |
+--------------+-------------+-----------+
| 21           | 1154        | 4         |
+--------------+-------------+-----------+
| 21           | 1153        | 5         |
+--------------+-------------+-----------+
| 21           | 1152        | 6         |
+--------------+-------------+-----------+
| 21           | 1151        | 7         |
+--------------+-------------+-----------+

現在我需要更新LocationProdut表中的SortValue庫,以便僅fkLocationId = 19 & 20Product表的SortValue

預期 output 如下。

+------------+-------------+-----------+
| fkBranchId | fkServiceId | Sortvalue |
+------------+-------------+-----------+
| 19         | 1157        | 7         |
+------------+-------------+-----------+
| 19         | 1156        | 3         |
+------------+-------------+-----------+
| 19         | 1155        | 4         |
+------------+-------------+-----------+
| 19         | 1154        | 2         |
+------------+-------------+-----------+
| 19         | 1153        | 1         |
+------------+-------------+-----------+
| 19         | 1152        | 5         |
+------------+-------------+-----------+
| 19         | 1151        | 6         |
+------------+-------------+-----------+
| 20         | 1155        | 4         |
+------------+-------------+-----------+
| 20         | 1154        | 2         |
+------------+-------------+-----------+
| 20         | 1153        | 1         |
+------------+-------------+-----------+
| 20         | 1152        | 5         |
+------------+-------------+-----------+
| 20         | 1151        | 6         |
+------------+-------------+-----------+
| 21         | 1155        | 3         |
+------------+-------------+-----------+
| 21         | 1154        | 4         |
+------------+-------------+-----------+
| 21         | 1153        | 5         |
+------------+-------------+-----------+
| 21         | 1152        | 6         |
+------------+-------------+-----------+
| 21         | 1151        | 7         |
+------------+-------------+-----------+

您可以使用簡單的inner join來更新所需的行:

UPDATE LP
  SET 
      LP.Sortvalue = P.SortValue
FROM LocationProduct LP
JOIN Product P ON LP.fkProductId = P.ProductId
WHERE fkLocationId IN(19, 20);

請在此處找到 db<>fiddle。

UPDATE        targetTable
SET           targetTable.targetColumn = s.sourceColumn
FROM          targetTable t
INNER JOIN    sourceTable s
ON            t.matchingColumn = s.matchingColumn

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM