如何使用 postgreSQL 在日期列中插入来自不同 table 的日期最旧的数据

How to insert data in a date column from a different table with the oldest date using postgreSQL

我有 2 tables trainingstraining_instances。请参阅以下架构:

培训 table:

column_name   data_type     is_nullable. foreign_key

id            uuid          NO           NULL
day           int4          NO           NULL
start_time    time(0)       NO           NULL
end_time      time(0)       NO           NULL
team_id       uuid          YES          public.teams(id)
inserted_at   timestamp(0)  NO           NULL
updated_at    timestamp(0)  NO           NULL

请注意,培训 table 还没有日期或 start_date 列。名为 day 的列是星期几。一个 training_id 可以有多个训练实例。

training_instances table:

column_name   data_type     is_nullable. foreign_key
id            uuid          NO           NULL
date          date          NO           NULL
start_time    time(0)       NO           NULL
end_time      time(0)       NO           NULL
team_size     int4          YES          NULL
training_id   uuid          YES          public.trainings(id)
team_id       uuid          YES          public.teams(id)
inserted_at   timestamp(0)  NO           NULL
updated_at    timestamp(0)  NO           NULL

我正在尝试在 trainings table 中创建一个名为 start_date 的新列,然后在此处插入数据以用于现有培训。我想在这个新的 start_date 列中为每个训练插入最旧的 date 对应的训练实例。

最好的方法是什么?

首先,使用

创建列
alter table public.trainings add "start_date" date null;

然后,尝试执行这个查询

update trainings 
  set start_date = (select min(ti.date) from training_instances ti where 
    trainings.team_id = ti.team_id and 
    trainings.id = ti.training_id)