如何在MySQL中使用SELECT INTO TEMP表语句

762 阅读3分钟

有时,我们应该从不同的MySQL表中获取数据,我们可以用于一些特定的目的。为了方便起见,我们创建一个临时表,把所有的数据放在那里,我们以后可以使用。当会话结束时,该表将自行消失,否则可以使用DROP命令删除它。同样,为了创建表的克隆,我们使用语句 "SELECT INTO",它不仅可以复制所选表的内容,还可以将所有内容插入新创建的表中。

在这篇文章中,我们将学习如何在MySQL中使用语句 "SELECT INTO TEMP TABLE",以及该语句如何工作。

什么是选择进入临时表

根据上面的讨论,我们知道语句 "SELECT INTO TEMP TABLE "是两个不同语句的组合,它们有各自独立的功能,通过使用这个语句,我们可以用一个语句执行多个功能。使用上述语句可以执行的功能有。

  • 创建一个新的临时表
  • 制作一个现有表的克隆
  • 读取其文件
  • 将其所有文件插入到新创建的临时表中

使用该语句的一般语法是:

SELECT * Column1, Column2,....,ColumnN
INTO #destinationForTemporarytable
FROM existing table
WHERE Condition

但这种语法只适用于SQL,不适用于MySQL,但我们可以用其他方式在MySQL中获得上述语句的相同结果。

如何使用MySQL在一个临时表中插入数据?

要从任何现有的表复制数据到MySQL的临时表,我们应该首先创建一个临时表,命名为temporary_Data,使用子句 "TEMPORARY TABLE",并定义该表的列。

CREATE TEMPORARY TABLE temporary_Data (ids INT,name VARCHAR(50));

要显示数据库的所有表,请使用。

SHOW TABLES;

创建的表不在表的列表中,这就证实了这个表是临时的,现在要显示这个临时表,我们使用。

SELECT * FROM temporary_Data;

输出显示 "Empty set",因为在表中没有插入数据,但它确认了临时表的存在。要复制任何具有相同列数的现有表的全部数据,我们首先使用 "INSERT INTO "将数据插入到一个临时表中,然后选择我们要复制数据的现有表。

一般的语法是这样的。

INSERT INTO temporary_tabel_name SELECT * FROM existing table_name;

按照一般的语法,我们将把数据从现有的表 "Guys "复制到新创建的临时表 "temporary_data"。

INSERT INTO temporary_Data SELECT * FROM  Employee_data;

显示这个临时表。

SELECT * FROM temporary_Data;

表 "Employee_data "的所有数据已经被复制到临时表 "temporary_Data "中。 现在,如果我们想复制和粘贴某个特定列的数据,比方说,我们想把现有表 "Grocery_bill "中的 "id "复制到现有临时表 "temporary_Data "的 "ids "列,我们将运行以下语句。

INSERT INTO temporary_Data(ids) SELECT id FROM Grocery_bill;

查看这个临时表。

SELECT * FROM temporary_Data;

从输出结果中,我们可以观察到表 "Grocey_bill "中的列已经被复制并粘贴到临时表的列中,其中 "NULL "出现在新条目旁边的列中,显示其中没有数值。因此,我们可以复制整个列以及任何特定的列到新表中。

我们也可以通过使用子句 "DROP TEMPORARY TABLE "来删除临时表,例如,如果我们想删除名为 "temporary_Data "的临时表,我们使用。

DROP TEMPORARY TABLE temporary_Data;

临时表已被成功删除。

结论

如果我们将所有的数据收集在一个临时表中,那么从不同的表中提取不同的数据就会变得简单。这篇文章帮助我们理解,我们可以通过使用子句 "TEMPORARY TABLE "来创建临时表,并且可以将整个数据或现有表中的某些特定列复制到临时表中。