运行多个使用公共变量的 SELECT 语句? (psql)

问题描述 投票:0回答:1

我有一个 Postgresql 数据库,需要运行一系列 SELECT 语句来收集所有相关信息以进行调试。有时有 20 多个语句。所有选择都使用相同的“参数”(或变量),但具有不同的 WHERE 子句。当前使用的“参数”有 5 到 17 个。

有没有一种方法可以让我在开始时定义一次参数,然后使用定义的值运行所有 SELECT 语句(一个接一个)?

例如,假设只有一个参数(一个ID字段)和后面的2个SELECT,那么伪代码如下。每次运行前我都会手动更新顶部的 ID 号。

-- 手动设置并在 SELECT 中重复使用的参数

v_id 整数:= 4732;

从产品中选择 * 其中 id = v_id;

从投诉中选择 * 其中产品_id = v_id;

...

我发现运行多个 SELECT 语句的唯一方法是将它们放入一个文件中并将其作为脚本传递给 psql。这是我唯一的选择吗?

目前我正在执行全局搜索并在运行之前替换 .sql(脚本)文件,但也许有更好的方法。例如,我在 SQL 文件中输入以下内容:

从产品中选择 * 哪里 id = #ID;

从投诉中选择 * 其中产品 ID = #ID;

...

在运行之前,进行全局搜索并将#ID替换为4732, 并类似地替换所有其他变量。

我正在考虑编写一个 Python 脚本来为我做到这一点,但也许有更好的方法来解决这个问题。

我询问了 Bing Chat,它建议创建一个临时表来将值保存为全局变量,然后我会在每个 SELECT 中加入到该表。我对此进行了一些思考,但是当有很多潜在变量并且并非每次都使用所有变量时,编辑也很困难。

谢谢

postgresql psql pgadmin multiple-select-query
1个回答
0
投票

使用

psql
您可以使用
\set

来实现这一点
\set v_id 4732

SELECT * FROM product WHERE id = :'v_id';
SELECT * FROM complaints WHERE product_id = :'v_id';
© www.soinside.com 2019 - 2024. All rights reserved.