【问题标题】:Insert into a table with a mix of dynamic and static data from a text file插入包含来自文本文件的动态和静态数据混合的表中
【发布时间】:2020-07-29 04:49:55
【问题描述】:

我有两张表,如下所示

条件(以表格形式存储的文本文件)。

SNO   Subject_id   
1        A1        
2        A2        
3        A3         
4        A4 

观察

Id   subject_id     START_DATE   END_DATE
1      D1           21/01/2007   21/01/2017
1      D2           23/05/1998   23/05/2008
1      D3           13/04/2017   13/04/2020

我希望我的输出如下所示。如您所见,除了来自文本文件的subject_id 列(存储为条件表)之外,其余列(Id, START_DATE, END_DATE) 是静态且相同的

Id   subject_id     START_DATE   END_DATE
1      D1           21/01/2007   21/01/2017
1      D2           23/05/1998   23/05/2008
1      D3           13/04/2017   13/04/2020
2      A1           01/01/2000   01/01/2010 
2      A2           01/01/2000   01/01/2010 
2      A3           01/01/2000   01/01/2010 
2      A4           01/01/2000   01/01/2010

这是我尝试过的,但无法获得预期的输出,因为 START_DATEEND_DATE 对于观察表是必需的。

insert into observation (Id,subject_id,start_date,end_date)
select '2',subject_id,'01/01/2000','01/01/2010' from condition;

可以帮我解决这个问题吗?

【问题讨论】:

    标签: sql postgresql select sql-insert


    【解决方案1】:

    尝试使用联合:

    SELECT Id, subject_id, START_DATE, END_DATE FROM Observation
    UNION ALL
    SELECT '2', subject_id, '01/01/2000', '01/01/2010' FROM condition
    ORDER BY Id, subject_id;
    

    如果您真的希望观察表看起来像您的预期输出,那么您当前的插入实际上是正确的。

    【讨论】:

    • 我收到这样的错误ERROR: syntax error at or near "distinct" LINE 1: SELECT '2', distinct person_id, '01/01/2000', '01/01/2010' F... ^
    • 那你没有运行我的代码,因为我从来没有在任何地方使用过DISTINCT
    • 好吧,问题是有时 subject_ids 可能是重复的。所以我用了 Distinct
    • 你能告诉我在这种情况下如何使用 Distinct 吗?我知道你告诉我的插入查询会起作用,但是当有重复时,即使这样也会引发错误
    • 我不明白您要使用 distinct 做什么,但语法已关闭。此时您可能想提出一个新问题。
    猜你喜欢
    • 2012-09-24
    • 2016-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多