我有 2 個表,表 A 和 B。表 A 包含一個計數器(在其他列中),用于跟蹤表 B 中該專案的最高版本,表 B 包含有關該專案的資訊。
-- Table A
---- -------
| ID | Total |
---- -------
| 1 | 50 | -- should be 39
| 2 | 41 | -- should be 40
| 3 | 21 | -- should be 11
---- -------
-- Table B, ItemID references ID in table A.
-- Note: Each item from table A has multiple rows in table B
-- Example: Version 39 means that there are 38 other rows of that item.
---- --------- --------
| ID | Version | ItemID |
---- --------- --------
| 1 | 38 | 1 |
| 2 | 39 | 1 |
| 3 | 40 | 2 |
| 4 | 11 | 3 |
---- --------- --------
然而,我現在發現了一個問題,即total許多專案的計數器 ,與最高的version. 有沒有辦法total在表 A 中更新version表 B 中每個專案的最高值?
值得一提的是,表 B 包含大約。2200 萬行,而表 A 大約有 3800 行。
如果有任何不清楚的地方,請告訴我,我會盡力澄清。提前致謝!
uj5u.com熱心網友回復:
你可以試試這個:
WITH list AS
(
SELECT ItemID, max(version) AS max_version
FROM table_B
GROUP BY ItemID
)
UPDATE table_A AS t
SET Total = l.max_version
FROM list AS l
WHERE t.ID = l.ItemID
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/351396.html
標籤:sql PostgreSQL
上一篇:groupby的SQL回傳最大值
