暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

在 MySQL 中插入with语句

原创 X丶 2022-10-20
990

从 MySQL v8 开始,我们有可用的公用表表达式 (CTE) 或 WITH 子句。我最近学会了如何在 INSERT 语句中使用 WITH 子句,类似于“使用 SELECT 插入”。像往常一样,我喜欢分享我学到的东西,所以让我们一起学习…

为了简单起见,我使用了这个任意的示例数据:

SELECT * FROM auto_test;

image.png

我们可以使用 WITH 子句为 INSERT 生成一个名称值:

WITH rogue_name AS( SELECT 'Dillion' AS some_name ) SELECT * FROM rogue_name;

image.png

您必须注意 WITH 子句在整个语句中的位置。

WITH rogue_name AS( SELECT 'Dillion' AS some_name ) INSERT INTO auto_test SELECT some_name FROM rogue_name; 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 auto_test SELECT some_name FROM rogue_name' at line 4

您可以看到,在尝试使用 WITH 插入时,已返回错误。此时,WITH 子句期望下一个语句是 SELECT,而此查询中的情况并非如此。

但是,将 WITH 子句移动到插入到子句和 SELECT 语句之间时,执行时不会出现任何错误:

INSERT INTO auto_test (name) WITH rogue_name AS( SELECT 'Dillion' AS some_name ) SELECT some_name FROM rogue_name;
SELECT * FROM auto_test;

image.png

如果您有一个 WITH 子句,该子句生成了一些您需要插入到另一个表中的数据,这将非常方便。如果您也使用插入s 的 WITH 子句,请告诉我!

原文标题:INSERT Using the WITH Clause in MySQL
原文作者:Joshua Otwell
原文地址:https://joshuaotwell.com/insert-using-the-with-clause-in-mysql/

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论