MySQL8 开始,支持公用表表达式 (CTE) 或 WITH 子句。生成的数据可以查询,但当生成的数据要插入另一张表时,和SQL SERVER语法有区别
SQL SERVER 语法是在WITH AS 后面进行INSERT INTO

WITH 
  cte1 AS (SELECT ...),  -- 第一个 CTE
  cte2 AS (SELECT ...)    -- 第二个 CTE(多个 CTE 用逗号分隔)
INSERT INTO target_table (column1, column2, ...)
SELECT 
  cte1.col, 
  cte2.col, 
  ...
FROM cte1
JOIN cte2 ON ...;         -- 可选:根据需求关联 CTE

但如果在MySQL中,会报错

Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INSERT INTO xxx SELECT xxx FROM xxx' at line x

那个大模型回答也有误,坚持在后面,但找了下资料后,确认MySQL的INSERT INTO要放到WITH AS前面

INSERT INTO target_table (column1, column2, ...)
WITH 
  cte1 AS (SELECT ...),  -- 第一个 CTE
  cte2 AS (SELECT ...)    -- 第二个 CTE(多个 CTE 用逗号分隔)
SELECT 
  cte1.col, 
  cte2.col, 
  ...
FROM cte1
JOIN cte2 ON ...;         -- 可选:根据需求关联 CTE

结果在时间差比较上,SQL SERVER和MYSQL区别:
SQLSERVER

DATEDIFF(ss, StartTime, EndTime)>=60
TIMESTAMPDIFF(SECOND, StartTime, EndTime)>=60(EndTime-StartTime)>=60

参考:
https://www.modb.pro/db/527485

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐