postgresql/lightdb中对应ctas的select into

  在postgresql/lightdb中,可以使用SELECT INTO(它不是ISO SQL的一部分,但是因为历史原因存在)创建一个新表并且用一个查询 计算得到的数据填充它。这些数据不会像普通的 SELECT那样被返回给客户端。新表的列具有 和SELECT的输出列相关的名称和数据类型。例如,创建一个只由来自films的最近项构成的 新表films_recent

SELECT * INTO films_recent FROM films WHERE date_prod >= '2002-01-01';

兼容性问题

  在SQL 标准中,使用SELECT INTO表示把值选择 到一个宿主程序的标量变量中,而不是创建一个新表。这实际上就是 ECPG(见第 35 章)和 PL/pgSQL(见第 42 章) 中的用法。 PostgreSQL使用 SELECT INTO的来表示表创建是有历史原因的,在parse analyze第一步也会先把SELECT转换为CTAS。 最好在新代码中使用CREATE TABLE AS

  与CREATE TABLE AS相比,SELECT INTO 不允许指定属性,就像带有USING method的表访问方法或者带有TABLESPACE tablespace_name的表的表空间。 如果必要,使用CREATE TABLE AS。因此,为新表选择默认表访问方法。详细信息请参阅default_table_access_method

posted @ 2023-01-24 20:09  zhjh256  阅读(43)  评论(0编辑  收藏  举报