【问题标题】:Why do I keep getting syntax error in insert into (MS Access 2013)为什么我在插入时不断收到语法错误(MS Access 2013)
【发布时间】:2020-09-29 18:16:34
【问题描述】:

我是 SQL 新手。我想在表格中添加行而不创建重复项,但我不断收到错误,我不知道为什么:

INSERT INTO [P ET FA] (id_danger, P, FA)
    (SELECT 
         measure.id_danger, SUM(mesure.valeur_mesure) AS P, SUM(mesure.Val) AS FA
     FROM mesure
     GROUP BY mesure.id_danger)
WHERE mesure.id_danger != [P ET FA].id_danger

【问题讨论】:

  • 1.将实际 SQL 包含为文本,而不是图像。 2. 指出您正在使用的 SQL 的变体(TSQL、Oracle、MySQL 等)。修复您的帖子,否则它将被删除。同时,您插入了一个 where 子句,该子句暗示源表和目标表之间的连接(没有实际连接)。几乎所有流行的 SQL 都可以做到这一点,但语法因平台而异。
  • 好的,现在看看它返回的错误信息。你看到了什么?

标签: sql ms-access-2013


【解决方案1】:

我对 ACCESS 不是很熟悉,但你可以试试:

INSERT INTO [P ET FA] (id_danger, P, FA)
SELECT measure.id_danger, SUM(mesure.valeur_mesure) AS P, SUM(mesure.Val) AS FA
FROM mesure
where mesure.id_danger not in (select id_danger FROM [P ET FA])
GROUP BY mesure.id_danger

【讨论】:

    【解决方案2】:
    INSERT INTO [P ET FA] (id_danger, P, FA)
       SELECT SRC.id_danger, 
              SUM(SRC.valeur_mesure) AS P, 
              SUM(SRC.val) AS FA 
         FROM mesure SRC
              LEFT JOIN [P ET FA] DEST
                ON SRC.id_danger = DEST.id_danger
         WHERE DEST.id_danger IS NULL
               GROUP BY SRC.id_danger
    

    这将仅为那些尚未在目标表中的 id_danger 值插入值。

    【讨论】:

      猜你喜欢
      • 2014-05-27
      • 2012-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-11
      相关资源
      最近更新 更多