【发布时间】:2020-08-11 14:34:21
【问题描述】:
我希望我不是在问一些非常愚蠢的问题,我确实搜索过这样的问题是否已经被回答过并且没有找到任何结论性的东西。
这些是创建有问题的两个表的语句:
CREATE TABLE race (
id INT PRIMARY KEY, --raceId
year INT,
round INT,
circuit_id INT REFERENCES circuit (id)
ON DELETE RESTRICT ON UPDATE CASCADE,
name CITEXT,
date DATE,
time TIME,
url CITEXT
)
;
ALTER TABLE race ADD COLUMN season_last_round BOOL;
UPDATE race SET season_last_round = False;
CREATE TABLE
season_last_round AS
SELECT
year,
max(round) AS last_round
FROM race
GROUP BY year
ORDER BY year
;
所以我真正想要实现的是让season_last_round 成为True,如果它实际上是year 上的max(round)。
然后我的方法是在两个表上创建多列索引
CREATE INDEX season_lr_year_last_round ON season_last_round (year, last_round);
CREATE INDEX race_year_round ON race (year, round);
然后做一些类似......
UPDATE race
SET season_last_round = True
WHERE
season_lr_year_last_round = race_year_round ;
但这显然行不通。
非常感谢你们的帮助和见解!
【问题讨论】:
标签: postgresql sql-update database-indexes