提问人:NZJL 提问时间:12/27/2022 最后编辑:MureinikNZJL 更新时间:12/27/2022 访问量:1420
如何在PostgreSQL中声明和使用变量?
How to declare and use a variable in PostgreSQL?
问:
我是PostgreSQL的新手,所以也许我的问题不被说服。但我想要的是将一个查询的结果放入一个变量中,然后在另一个查询中再次使用它。我在 pgAdmin4 中运行我的查询,以下是我的查询:
WITH vars AS (
(select count(*) from employee) AS vars_id
)
select
*
from
employee
where
id=vars.vars_id;
错误是:
ERROR: syntax error at or near "AS"
LINE 2: (select count(*) from employee) AS vars_id
^
SQL state: 42601
Character: 49
答:
2赞
Mureinik
12/27/2022
#1
CTE 的结果是表表达式。你不能只把它称为标量,你需要从中查询:
WITH vars AS (
SELECT COUNT(*) AS vars_id FROM employee
)
SELECT *
FROM employee e
JOIN vars ON e.id = vars.vars_id
评论
0赞
NZJL
12/27/2022
我实施了你的解决方案,它给了我和我一样的错误。
0赞
Mureinik
12/27/2022
@NZJL哦,这个条款放错了地方。什至没有注意到这一点,我是罪魁祸首。请参阅我编辑的答案。as
0赞
Peter Uzek
11/29/2023
#2
是否可以在多个查询中使用这些变量? 例如
WITH vars (user_id) as (
values (5)
)
delete from orders where user_id = vars.user_id;
delete from user_setting where user_id = vars.user_id;
delete from documents where user_id = vars.user_id;
评论
where id=vars.vars_id;
=>where id = (SELECT vars.vars_id FROM vars);
vars
是一个表,而不是单个记录。纯 SQL 中没有这样的变量。