SQL - 使用 WITH 在 INSERT INTO 上声明变量
SQL - Using WITH to declare variable on INSERT INTO
我正在尝试使用 WITH
在执行 INSERT INTO
时为查询声明一个变量。
我正在关注 ,它为 SELECT
查询提供了以下示例:
WITH myconstants (var1, var2) as (
values (5, 'foo')
)
SELECT *
FROM somewhere, myconstants
WHERE something = var1
OR something_else = var2;
我尝试了以下但没有成功:
playground> CREATE TABLE foo (id numeric)
CREATE TABLE
playground> WITH consts (x) AS (VALUES (2)) INSERT INTO foo VALUES (x)
column "x" does not exist
LINE 1: WITH consts (x) AS (VALUES (2)) INSERT INTO foo VALUES (x)
^
playground> WITH consts (x) AS (VALUES (2)) INSERT INTO foo VALUES (consts.x)
missing FROM-clause entry for table "consts"
LINE 1: ...consts (x) AS (VALUES (2)) INSERT INTO foo VALUES (consts.x)
^
playground> WITH consts (x) AS (VALUES (2)) INSERT INTO foo VALUES (consts.x) FROM consts
syntax error at or near "FROM"
LINE 1: ...AS (VALUES (2)) INSERT INTO foo VALUES (consts.x) FROM const...
^
playground> WITH consts (x) AS (VALUES (2)) INSERT INTO foo FROM consts VALUES (consts.x)
syntax error at or near "FROM"
LINE 1: WITH consts (x) AS (VALUES (2)) INSERT INTO foo FROM consts ...
^
请注意,我是 SQL 的初学者,因此我希望避免使用暗示使用 PLPGSQL
的解决方案
我想你想要:
WITH consts (x) AS (VALUES (2)) INSERT INTO foo SELECT x FROM consts
即:WITH
子句创建一个 派生的 table,然后您可以在主查询中使用它;所以你实际上需要 SELECT ... FROM
常见的 table 表达式。
我正在尝试使用 WITH
在执行 INSERT INTO
时为查询声明一个变量。
我正在关注 ,它为 SELECT
查询提供了以下示例:
WITH myconstants (var1, var2) as (
values (5, 'foo')
)
SELECT *
FROM somewhere, myconstants
WHERE something = var1
OR something_else = var2;
我尝试了以下但没有成功:
playground> CREATE TABLE foo (id numeric)
CREATE TABLE
playground> WITH consts (x) AS (VALUES (2)) INSERT INTO foo VALUES (x)
column "x" does not exist
LINE 1: WITH consts (x) AS (VALUES (2)) INSERT INTO foo VALUES (x)
^
playground> WITH consts (x) AS (VALUES (2)) INSERT INTO foo VALUES (consts.x)
missing FROM-clause entry for table "consts"
LINE 1: ...consts (x) AS (VALUES (2)) INSERT INTO foo VALUES (consts.x)
^
playground> WITH consts (x) AS (VALUES (2)) INSERT INTO foo VALUES (consts.x) FROM consts
syntax error at or near "FROM"
LINE 1: ...AS (VALUES (2)) INSERT INTO foo VALUES (consts.x) FROM const...
^
playground> WITH consts (x) AS (VALUES (2)) INSERT INTO foo FROM consts VALUES (consts.x)
syntax error at or near "FROM"
LINE 1: WITH consts (x) AS (VALUES (2)) INSERT INTO foo FROM consts ...
^
请注意,我是 SQL 的初学者,因此我希望避免使用暗示使用 PLPGSQL
的解决方案我想你想要:
WITH consts (x) AS (VALUES (2)) INSERT INTO foo SELECT x FROM consts
即:WITH
子句创建一个 派生的 table,然后您可以在主查询中使用它;所以你实际上需要 SELECT ... FROM
常见的 table 表达式。