postgresql - Postgresql & PgAdmin 简单变量
问题描述
我不明白为什么在 pgAdmin 中创建变量必须如此复杂,但有人可以帮我解决这个概念。我只想创建一个Name
来自记录的基本变量。然后我想Name
再次搜索。所以这是我需要的一个基本示例:
VAR1 = SELECT "Name"
FROM "Client"
WHERE "ID" = '1'; // This select will return 'Peter'
SELECT * FROM "Client" WHERE "Name" = VAR1;
我已经尝试了所有这些。创建临时表:
CREATE TEMP TABLE VAR1 AS VALUES (SELECT "Name" FROM "Client" WHERE "UUID" = 1;);
SELECT * FROM "Client" WHERE Name = VAR1.column1;
...
ERROR: syntax error at or near "SELECT"
LINE 1: CREATE TEMP TABLE VAR1 AS VALUES (SELECT "Name" FROM "Client...
^
这在 pgAdmin 中不起作用,它只适用于psql
:
\set VAR1 (SELECT "Name" FROM "Client" WHERE "ID" = '1')
SELECT * FROM "Client" WHERE name = :VAR1;
这也不起作用:
set session my.vars.id = SELECT "Name" FROM "Client" WHERE "ID" = 1;
SELECT * FROM "Client" WHERE "Name" = current_setting('my.vars.id');
...
ERROR: syntax error at or near "SELECT"
LINE 1: set session my.vars.id = SELECT "Name" FROM "Client" WHERE "...
^
目前这不起作用,但期望我为一个简单的VAR1 = x
. 即使你得到这个工作,我也请不要这个作为答案:
DO
$$
DECLARE
VAR1 text = (SELECT "Name" FROM "Client" WHERE "UUID" = 1);
BEGIN
RETURN (SELECT * FROM "Client" WHERE "Name" = VAR1);
END;
$$
LANGUAGE plpgsql;
...
ERROR: RETURN cannot have a parameter in function returning void
LINE 6: RETURN (SELECT * FROM "Client" WHERE "Name" = VAR1);
^
使用WITH
不起作用,因为您只能在WITH
块正下方使用该变量一次。我希望能够在整个脚本中使用该变量。
为什么这必须如此复杂?VAR1 = x
我已经阅读了许多其他答案(那是我得到所有测试的地方)。所以请不要引用它们,除非它们提供不同的东西。
解决方案
推荐阅读
- c# - 如何升级在 Windows 故障转移群集上运行的通用应用程序
- c - 在 c 中使用 fscanf() 时更改的变量
- laravel - 在 Laravel 上使用 Vue js 更改 WP REST API 日期的显示
- carthage - swift 4.2 的 Xcode 10 视觉识别问题
- xforms - XSLTForm 日期选择器未正确显示
- node.js - 来自重定向 URL 的 URL 参数
- android - Android Sqlite 通过“selection”和“selectionArgs”搜索日期
- java - 其中一个片段无法立即更新来自其他片段的数据
- java - 更新 SQLite 数据
- android - 导航时获取未定义不是对象错误