如何将 8 个查询合二为一来创建一个过程?

Posted

技术标签:

【中文标题】如何将 8 个查询合二为一来创建一个过程?【英文标题】:How to combine 8 queries into one to create a procedure? 【发布时间】:2015-07-27 22:09:51 【问题描述】:

我创建了一个表来匹配用于将库存上传到亚马逊的在线模板。总共有 440 列。我不担心,他们也不担心,这主要是必要的。它从另外两个表中提取,我将它们称为 table1 和 table2。我将调用另一个模板表。

基本上,我从 TRUNCATE 开始,以完全擦除 templateTable 上的信息。当它被填满时,我希望它是空的,除了它让我感到舒服之外没有其他原因。没有其他表被截断,每次运行查询时只截断这个表。

之后,有一个巨大的 INSERT 查询从 table1 和 table2 获取信息并将所有这些信息放入 templateTable 的特定列中。

此时查询 3 是更新,查询 3 到 8 也是如此。它们都是更新查询。我将它们与第二个查询分开进行,其中所有内容都被填充,因为每个更新都有一个 CASE 和不同的要求。

我想为这些查询创建一个过程,这样他们就可以只运行一个过程并收工。但我不确定如何组合填充和更正此模板表中信息的 8 个查询。我应该提到我不只是从一个表中获取信息并将其粘贴到模板表中 - 它更像是“table1.modelNum = 1234 然后 templateTable.modelNum = 5678 的情况”。

【问题讨论】:

哪种说法让您感到困扰?是UPDATE吗?您只能更新一个表 - 而不是多个,如您的示例所示。 不清楚你在问什么。您是在问如何创建存储过程?如果您以特定问题结束您的帖子,这将有所帮助。您用 sql-server 标记,但在您的问题中您引用了 mysql。你用的是哪一个? 对不起,伙计们,我会尽力解释得更好——更新工作正常,但那是因为它们是分开的。当您在 UPDATE 之后包含多个表时,这是因为您必须包含要包含的表。相信我,这部分有效。为错误标签道歉;这是我第一次发布问题。我会解决的。这是MySQL。基本上...我有 8 个查询。不过,我的工作场所在编程方面不是很好,编辑查询甚至运行它对于这里的大多数人来说都有些令人反感。我想将 8 个查询合二为一。让我重新写下我的问题 好吧,我编辑了@BrianPressler 的问题。希望它现在更有意义。尝试制作一些虚假版本的查询对我来说太模糊了,但是如果您需要我可以尝试。它只会是冗长的。 【参考方案1】:

您可以将所有 8 个 SQL 语句包装在 MySQL 中的一个过程中,如下所示:

CREATE PROCEDURE MyProcedure()
BEGIN 
    <SQL STATEMENT 1>;
    <SQL STATEMENT 2>;
    <SQL STATEMENT 3>;
    <SQL STATEMENT ...>;
END//

然后称它为您提交:

exec MyProcedure;

【讨论】:

看起来棒极了!让我试试看! 嗯。它似乎不喜欢将截断作为其中的第一个查询。 您是否收到错误消息?确保在 DECLARE 之前调用 TRUNCATE:***.com/questions/9470398/… 抱歉没有回复 - 我确实让它工作了。我昨天没在工作回来堆。非常非常非常感谢!

以上是关于如何将 8 个查询合二为一来创建一个过程?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 SQL 中组合两个查询? (子查询)

如何将这两个查询组合成一个查询?

如何将 3 个 opencv IplImage 合二为一?

将三个字段合二为一

如何将这 2 个 SQL 命令合二为一?

如何将三个div合二为一,以便分享背景?