使用其他表的属性以及新属性创建表

时间:2019-04-25 14:09:49

标签: sql postgresql

我有一个ER图,其中有2个实体通过具有属性的关系连接,看起来像这样:ERD

我可以使用以下方法创建新表:

CREATE TABLE participate AS (
  SELECT user.id, group.group_id 
  FROM user, group
)

我不确定如何也添加date属性。

2 个答案:

答案 0 :(得分:1)

我建议使用cross join而不是,来明确表示。

您可以添加日期:

CREATE TABLE participate AS (
  SELECT u.id, g.group_id, current_datetime as date 
  FROM user u CROSS JOIN
       group g;

USERGROUP对于表名来说确实是错误的选择,因为它们是SQL关键字和保留字。我通常以复数形式命名表格,因此我建议使用USERSGROUPS

答案 1 :(得分:1)

您可以选择一个虚拟值:

CREATE TABLE participate 
AS 
SELECT user.id as user_id, 
       group.group_id, 
       current_date as "date"
FROM "user"
  CROSS JOIN "group";

请注意,usergroup是保留关键字。您应该避免将它们用作表名。但是,如果这样做,则每次使用该表时都必须将其用双引号引起来