我正在使用以下查询运行 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'
我已在 DB2
和 PostgreSQL
上验证了此查询。它工作正常。我想知道MySQL procedure
查询是否不支持WITH AS
子句?我怎样才能用任何替代方法实现这一目标?
最佳答案
MySql 不支持 WITH 子句。有关此的更多信息,请参阅此 How do you use the "WITH" clause in MySQL?
关于mysql - 如何在INSERT MySQL查询中使用WITH AS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47571586/