首页 > 解决方案 > 在 PostgreSQL 中为每个 ID 添加日期

问题描述

我有一个看起来像这样的表“用户”

  id     name
  1      Johny 
  2      Michael
  3      Jony

我想添加名为日期的新列,

date
2021-01-01
2021-02-01

但我想要每个 id 的日期

  id     name      date
  1      Johny     2021-01-01
  1      Johny     2021-02-01
  2      Michael   2021-01-01
  2      Michael   2021-02-01
  3      Jony      2021-01-01
  3      Jony      2021-02-01

这个怎么做 ?

标签: postgresql

解决方案


似乎您想在现有表users与另一个表或某个伪表之间进行交叉连接。

这是使用伪表的方法(我已别名为d

select u.id, u.name, d.date
from
  users u
  cross join
  (
     select TO_DATE('2021-01-01', 'YYYY-MM-DD') as date
     union
     select TO_DATE('2021-02-01', 'YYYY-MM-DD')
  ) as d;

Sql Fiddle 示例在这里

这将在两个表之间产生所有排列(#users x #dates)


推荐阅读