Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何将查询的输出存储到临时表中,并在新查询中使用该表?_Mysql_Temp Tables - Fatal编程技术网

Mysql 如何将查询的输出存储到临时表中,并在新查询中使用该表?

Mysql 如何将查询的输出存储到临时表中,并在新查询中使用该表?,mysql,temp-tables,Mysql,Temp Tables,我有一个MySQL查询,它使用3个表和2个内部联接。然后,我必须从这个查询输出中找到一个组的最大值。我无法将两者结合起来。我可以通过将第一个复杂查询的输出存储到某种临时表中,给它一个名称,然后在新查询中使用该表来解决这个问题吗?这将使代码更易于管理。谢谢您的帮助。这非常简单: CREATE TEMPORARY TABLE tempname AS ( SELECT whatever, whatever FROM rawtable JOIN othertab

我有一个MySQL查询,它使用3个表和2个内部联接。然后,我必须从这个查询输出中找到一个组的最大值。我无法将两者结合起来。我可以通过将第一个复杂查询的输出存储到某种临时表中,给它一个名称,然后在新查询中使用该表来解决这个问题吗?这将使代码更易于管理。谢谢您的帮助。

这非常简单:

CREATE TEMPORARY TABLE tempname  AS (    
    SELECT whatever, whatever
      FROM rawtable
      JOIN othertable ON this = that
)
连接关闭时,临时表将消失。临时表包含创建时捕获的数据

您还可以创建一个视图,如下所示

CREATE VIEW viewname AS (    
    SELECT whatever, whatever
      FROM rawtable
      JOIN othertable ON this = that
)

视图是永久对象(当连接关闭时它们不会消失),但在调用它们时它们会从基础表中检索数据。

您是否尝试过创建临时表??您可以在一个查询中完成所有这一切提交到目前为止尝试过的内容。如果您想创建临时表,您可以,但2个内部联接并不需要临时表。对不起,您是否建议在这样的情况下使用mysql临时表()?@accounter简言之,不是。在通用mysql中,临时表几乎没有用,因为它们受到限制。MariaDB 10.2(MySQL fork)具有通用的表表达式,这是解决该问题的好方法。或者,使用视图避免子查询键入两次。