【问题标题】:How to do WITH AS in INSERT MySQL query?如何在 INSERT MySQL 查询中使用 WITH AS?
【发布时间】:2017-11-30 10:49:48
【问题描述】:

我正在运行带有以下查询的 Mysql 程序(MySQL 5.7):

DECLARE LAST_MAC BIGINT;

SET LAST_MAC = (SELECT COALESCE(MAX(MAC_ADDRESS), 0) FROM MAC_ADDRESS_TABLE) + 1;
      INSERT INTO MAC_ADDRESS_TABLE(MAC_ADDRESS)
      WITH TEMP (N)
      AS (
        VALUES (LAST_MAC)
        UNION ALL
        SELECT N+1 FROM TEMP WHERE N+1 < (LAST_MAC + CREATED)
      ) SELECT N AS MAC_ADDRESS FROM TEMP;

运行查询后,我收到以下错误:

right syntax to use near 'TEMP (N)
      AS (
        VALUES (LAST_MAC)
        UNION ALL
        SELECT N'

我已经在 DB2PostgreSQL 上验证了这个查询。它工作正常。我想知道WITH AS 子句是否不支持MySQL procedure 查询?我怎样才能用任何替代方法来实现这一点?

【问题讨论】:

  • 尝试将 TEMP (N) 更新为 TEMP N 并检查一次
  • 遇到同样的错误

标签: mysql sql database procedure


【解决方案1】:

MySql 不支持 WITH 子句。有关这方面的更多信息,请参阅此How do you use the "WITH" clause in MySQL?

【讨论】:

    猜你喜欢
    • 2017-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-02
    • 1970-01-01
    • 1970-01-01
    • 2020-12-09
    • 1970-01-01
    相关资源
    最近更新 更多