【发布时间】:2018-11-09 04:54:25
【问题描述】:
我有两张桌子,bank_data 和 sec_data。表bank_data 具有列id、date、asset 和liability。 date 列分为四等分。
id | date | asset | liability
--------+----------+--------------------
1 | 6/30/2001| 333860 | 308524
1 | 3/31/2001| 336896 | 311865
1 | 9/30/2001| 349343 | 308524
1 |12/31/2002| 353863 | 322659
2 | 6/30/2001| 451297 | 425156
2 | 3/31/2001| 411421 | 391846
2 | 9/30/2001| 430178 | 41356
2 |12/31/2002| 481687 | 46589
3 | 6/30/2001| 106506 | 104532
3 | 3/31/2001| 104196 | 102983
3 | 9/30/2001| 106383 | 104865
3 |12/31/2002| 107654 | 105867
表sec_data 具有id、date 和security 列。我使用以下代码在 R 中将这两个表组合成一个名为 new_table 的新表:
dbGetQuery(con, "CREATE TABLE new_table
AS (SELECT sec_data.id,
bank_data.date,
bank_data.asset,
bank_data.liability,
sec_data.security
FROM bank_data,bank_sec
WHERE (bank_data.id = sec_data.id) AND
(bank_data.date = sec_data.date)")
我想在这个 R 代码中设置两个主键(id 和 date)而不使用 pgAdmin。我想使用 Constraint bankkey Primary Key (id, date) 之类的东西,但 AS 和 SELECT 函数让我失望。
【问题讨论】:
-
这不是 R 问题,而是 SQL 问题。你应该可以使用
ALTER TABLE之类的东西来做到这一点。 (顺便说一句,当您的查询没有返回任何内容时,您应该使用dbExecute,就像在您的create table查询中一样。) -
谁
sec_data?您分配bank_sec,不使用implicit join,而是使用复合primary key,如alter table new_table add primary key(id,date) -
一张表最多只能有一个主键 - 你的意思是一个主键由两列组成
标签: sql postgresql ddl composite-primary-key