SQL如何把查询出来的多个表创建成一个临时表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL如何把查询出来的多个表创建成一个临时表相关的知识,希望对你有一定的参考价值。

参考技术A

SELECT * INTO #TEMPTABLENAME

FROM

(

SELECT xxxxxx //你的查询语句

)AS table_source //这个别名是必须的

WHERE xxxxxxxx //你需要的where判断;

COMMIT或ROLLBACK后可自动删除该临时表

1、sql server使用select into会自动生成临时表,不需要事先创建。

select * into #temp from sysobjects

2、sql要把多个表合并成一个要用到union或union all的关键字。

3、union或union all的区别是:union会自动压缩多个结果集合中的重复结果,而union all则将所有的结果全部显示出来。

扩展资料

sql语言特点如下:

1、一体化:SQL集数据定义DDL、数据操纵DML和数据控制DCL于一体,可以完成数据库中的全部工作。

2、使用方式灵活:它具有两种使用方式,即可以直接以命令方式交互使用;也可以嵌入使用,嵌入到C、C++、FORTRAN、COBOL、JAVA等主语言中使用。

3、语言简洁,语法简单,好学好用:在ANSI标准中,只包含了94个英文单词,核心功能只用6个动词,语法接近英语口语。

参考资料:百度百科_结构化查询语言

Spark:通过对临时表执行 sql 查询来创建临时表

【中文标题】Spark:通过对临时表执行 sql 查询来创建临时表【英文标题】:Spark: Create temporary table by executing sql query on temporary tables 【发布时间】:2018-06-20 13:46:20 【问题描述】:

我正在使用 Spark,我想知道:如何通过对表 A 和 B 执行 sql 查询来创建名为 C 的临时表?

sqlContext
   .read.json(file_name_A)
   .createOrReplaceTempView("A")

sqlContext
   .read.json(file_name_B)
   .createOrReplaceTempView("B")

val tableQuery = "(SELECT A.id, B.name FROM A INNER JOIN B ON A.id = B.fk_id) C"

sqlContext.read
   .format(SQLUtils.FORMAT_JDBC)
   .options(SQLUtils.CONFIG())
   .option("dbtable", tableQuery)
   .load()

【问题讨论】:

【参考方案1】:

您需要将结果保存为临时表

tableQuery .createOrReplaceTempView("dbtable")

外部表上的永久存储,您可以使用 JDBC

val prop = new java.util.Properties
prop.setProperty("driver", "com.mysql.jdbc.Driver")
prop.setProperty("user", "vaquar")
prop.setProperty("password", "khan") 
 
//jdbc mysql url - destination database is named "temp"
val url = "jdbc:mysql://localhost:3306/temp"
 
//destination database table 
val dbtable = "sample_data_table"
 
//write data from spark dataframe to database
df.write.mode("append").jdbc(url, dbtable, prop)

https://docs.databricks.com/spark/latest/data-sources/sql-databases.html

http://spark.apache.org/docs/latest/sql-programming-guide.html#saving-to-persistent-tables

【讨论】:

【参考方案2】:
sqlContext.read.json(file_name_A).createOrReplaceTempView("A")
sqlContext.read.json(file_name_B).createOrReplaceTempView("B")
val tableQuery = "(SELECT A.id, B.name FROM A INNER JOIN B ON A.id = B.fk_id) C"
sqlContext.sql(tableQuery).createOrReplaceTempView("C")

试试上面的代码就行了。

【讨论】:

你的答案是有效的,不幸的是我不能使用 sqlContext.sql 因为它不会执行数据库中的整个请求。实际上,sqlContext.sql 可以将查询拆分为两个选择,然后在不同的工作人员上执行连接。在我的情况下,工人没有足够的内存来处理它并且他们崩溃了......

以上是关于SQL如何把查询出来的多个表创建成一个临时表的主要内容,如果未能解决你的问题,请参考以下文章

sql中怎样将查询出来的结果创建成临时表

mysql数据库怎么把查询出来的数据生成临时表

SQL临时表使用

sql如何创建临时表

小白 sql的查询问题

SQL怎么创建一个临时表