【问题标题】:SQL insert adding more than one row unintentionallySQL插入无意中添加了多行
【发布时间】:2021-05-25 19:05:59
【问题描述】:

对于 SQL/SAS 来说还是相当新的。我正在尝试将第二行添加到当前只有一行的最终表中。它有 10 列长,下面是我现在的代码。

insert into lib.summary 
    select 
        count(distinct cat_rotn_data.rotn_prng_nbr), 
        1,
        1,
        1,
        avg.avg_blk,
        1,
        avg.avg_duty,
        1,
        1,
        1
    from  avg, cat_rotn_data;

它在正确的位置返回正确的数字,但它有 1,089 行(cat_rotn_data 的长度)而不是我想要的 2 的长度。我希望成为第 2 行的那一行被重复了一千多次,我不太清楚为什么。

此外,现在为 1 的值将是来自其他表的其他计数/总和计算,但我将它们取出以简化我试图弄清楚这一点。

【问题讨论】:

  • 如果您单独执行 SELECT,它会返回您期望的结果吗?
  • 我怀疑这是您的交叉连接,但如果没有从您的两个表和 SELECT 语句中看到一些示例数据和所需的输出,我们不可能在这里指导。
  • from avg, cat_rotn_data 是交叉连接,即笛卡尔积。将返回表 1 中的行数乘以表 2 中的行数。

标签: sql sas sql-insert


【解决方案1】:

您可能需要一个子选择来进行计数。没有更多信息很难准确地说出

假设表avg 有一行。

insert into lib.summary 
    select 
        (select 
           count(distinct cat_rotn_data.rotn_prng_nbr)
         from cat_rotn_data
        ),
        1,
        1,
        1,
        avg.avg_blk,
        1,
        avg.avg_duty,
        1,
        1,
        1
    from  avg

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-04
    • 2015-10-20
    • 1970-01-01
    • 1970-01-01
    • 2015-08-12
    • 2017-12-20
    相关资源
    最近更新 更多