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技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐