相关疑难解决方法(0)

search_path如何影响标识符解析和"当前架构"

是否可以定义默认情况下创建新表的模式?(由"不合格的表名称"引用.)

我已经看到了在Postgres中使用"搜索路径"的一些细节,但我认为它只在检索数据时有效,而不是创建.

我有一堆SQL脚本,它们创建了许多表.我没有修改脚本,而是希望默认情况下在特定模式中设置数据库创建表 - 当它们具有非限定名称时.

这可能吗?

postgresql schema search-path database-table

46
推荐指数
2
解决办法
3万
查看次数

单个查询中的多个CTE

是否可以在单个查询中组合多个CTE arel?我正在寻找获得这样结果的方法:

WITH 'cte1' AS (
...
),
WITH RECURSIVE 'cte2' AS (
...
),
WITH 'cte3' AS (
...
)
SELECT ... FROM 'cte3' WHERE ...
Run Code Online (Sandbox Code Playgroud)

如你所见,我有一个递归CTE和两个非递归.

sql postgresql recursive-query common-table-expression arel

38
推荐指数
3
解决办法
3万
查看次数

在PostgreSQL中选择临时表?

如何在PostgreSQL中使用select into创建临时表.例如在SQL中Select * into temp_tab from source_tab;

sql postgresql

18
推荐指数
1
解决办法
2万
查看次数

在PostgreSQL中组合两个SELECT查询

我想结合两个选择查询UNION.
如何使用SELECT第二个中的第一个结果SELECT

(SELECT carto_id_key FROM table1
    WHERE tag_id = 16)
UNION 
(SELECT * FROM table2
    WHERE carto_id_key = <the carto_id result from above> )
Run Code Online (Sandbox Code Playgroud)

sql postgresql union common-table-expression

13
推荐指数
1
解决办法
2万
查看次数

合并具有多个参考的用户并计算他们的集体资产

有一组用户。一个人可以拥有多个用户,但ref1ref2可能相似,因此可以将用户链接在一起。ref1ref2不重叠,则 中ref1不存在 中的一个值ref2

一个用户可以拥有多种资产。我想“合并”具有一个或多个相似参考的用户,然后计算他们总共拥有多少资产。用户表中可能缺少条目,在这种情况下,我只想将所有者传播到 ref2 并设置 asset_count 和 asset_ids。

下面是一个示例架构来说明:

示例资产

SELECT * FROM assets;
Run Code Online (Sandbox Code Playgroud)
ID 姓名 所有者
1 #1 A
2 #2
3 #3 C
4 #4 A
5 #5 C
6 #6 d
7 #7 e
8 #8 d
9 #9 A
10 #10 A
11 #11 z

用户示例

SELECT * FROM users;
Run Code Online (Sandbox Code Playgroud)
ID 用户名 参考1 参考2
1 波波 A d
2 托托 e …

sql arrays postgresql graph-theory aggregate-functions

12
推荐指数
1
解决办法
440
查看次数

手动更改postgresql中的查询执行计划?

是否可以在postgresql中手动更改执行计划的操作顺序?例如,如果我总是希望在过滤之前进行排序操作(尽管在正常使用postgresql时没有意义),是否可以通过例如更改操作的内部成本来手动强制执行?

如果我实现自己的功能怎么样?是否有可能始终在sql语句的最后执行这样的函数?

sql postgresql common-table-expression

4
推荐指数
1
解决办法
1744
查看次数

错误:具有默认值的输入参数也必须具有默认值

我试图将默认值设置为参数列表中的函数内的变量,但收到错误:

 Create or replace function test(name varchar default null
                               , city varchar default null
                               , phonenumber varchar(20) default null
                               , out sno bigint, address varchar)
   returns void as
 $$
 Declare 
        phonenumber AS VarChar(20);
 Begin
        phonenumber : =phonenumber; 

    SELECT sno = MAX(ssno)+1 FROM emp;

    IF(sno IS NULL)  then
           sno=IDENT_CURRENT('emp')+1;
    end;

    raise info '%',name;
    raise info '%',city;
    raise info '%',phonenumber;
    raise info '%',address;

    insert into emp(ename,ecity,ephonenumber,eaddress)
    values(name,city,phonenumber,address);

 end;
 $$
 langauge plpgsql;
Run Code Online (Sandbox Code Playgroud)

例:

 Create or replace function test(name varchar default null
                               , city …
Run Code Online (Sandbox Code Playgroud)

postgresql plpgsql default-value

2
推荐指数
1
解决办法
2815
查看次数