小编jav*_*ava的帖子

postgresql 中的表名作为变量

我有一个函数如下:

CREATE OR REPLACE FUNCTION func(a integer)
  RETURNS integer AS
$BODY$
begin

     for row in
                     Select id  from table_a    where quantity=1
    loop
        do something
    end loop

end;
$BODY$
  LANGUAGE plpgsql VOLATILE
Run Code Online (Sandbox Code Playgroud)

我需要更改此函数以采用另一个参数来告诉是否使用table_aor table_b

whichtouse=1我需要使用table_a.

whichtouse=2我需要使用table_b.

CREATE OR REPLACE FUNCTION func(a integer,whichtouse integer)
  RETURNS integer AS
$BODY$
begin

     for row in
                     Select id  from ??? where quantity=1
    loop
        do something
    end loop

end;
$BODY$
  LANGUAGE plpgsql VOLATILE
Run Code Online (Sandbox Code Playgroud)

如何确定使用哪个表?

sql postgresql

6
推荐指数
1
解决办法
4125
查看次数

解释printf中的评估顺序

main()
{
    int i=5;
    printf("%d%d%d%d%d%d",i++,i--,++i,--i,i);
}
Run Code Online (Sandbox Code Playgroud)

输出是45545,但我不知道它是如何工作的.有人说函数调用中的参数从左到右被压入堆栈.

c printf

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

行构造函数有什么用?

在PostgreSQL中,这个ROW()函数是干什么用的?

具体有什么区别

SELECT ROW(t.f1, t.f2, 42) FROM t;
Run Code Online (Sandbox Code Playgroud)

其中f1is of type int, f2is of typetext

CREATE TYPE myrowtype AS (f1 int, f2 text, f3 numeric);
Run Code Online (Sandbox Code Playgroud)

sql postgresql types row

5
推荐指数
1
解决办法
3577
查看次数

postgresql 中的 Row_number()

我有一个疑问:

select .....
from....
order by ....
Run Code Online (Sandbox Code Playgroud)

我想向此查询添加行号。

当我读到row_number()它时说语法是:

row_number() OVER(ORDER BY ...) 
Run Code Online (Sandbox Code Playgroud)

意思是我必须这样做:

select row_number() OVER(ORDER BY ...) , .....
from....
order by ....
Run Code Online (Sandbox Code Playgroud)

这意味着我必须写两次相同的ORDER BY语句。

有没有办法做这样的事情:

select row_number() , .....
from....
order by ....
Run Code Online (Sandbox Code Playgroud)

这意味着它将采用从查询中给出的任何顺序,并简单地向其添加数字。

sql postgresql window-functions

5
推荐指数
1
解决办法
5700
查看次数

当没有找到行时,是否可以强制查询中的reutrn值?

我有一个简单的查询:

Select qty from X where id=....;
Run Code Online (Sandbox Code Playgroud)

此查询始终返回0或1行.当它返回1行时一切正常.但如果它返回0行,我的查询将失败,因为qty在计算中使用.(这是Select statment中的Sub查询).

我需要以某种方式确保查询始终返回1行.

我试过了:

Select coalesce(qty,0) from X where id=....;
Run Code Online (Sandbox Code Playgroud)

但它没有帮助,好像没有行,合并是没用的.如果没有发现它应该给出的行0

我该如何解决?

sql postgresql

3
推荐指数
1
解决办法
251
查看次数

按钮名称参数中&的含义是什么?

当我创建一个按钮时,wxpython我可以:

self.all = wx.Button(self, -1, _("&ALL"))
Run Code Online (Sandbox Code Playgroud)

或者

self.all = wx.Button(self, -1, _("ALL"))
Run Code Online (Sandbox Code Playgroud)

两者都生成一个名为的按钮 ALL

那么,&name参数中的the是什么意思呢?

ducomntation没有指定任何关于它的内容。

这里的问题是相似的,但不一样。那里的解决方案是设置焦点。虽然您可以为菜单设置焦点,但不能将焦点设置为按钮。

python wxpython

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

在postgresql中如何获取以1结尾的所有行?

假设我有一个表如下:

id name  length
1   A     21.5
2   B     12.4
3   C      0
4   D     17
5   E      1
Run Code Online (Sandbox Code Playgroud)

我希望得到:

id name  length
1   A     21.5
5   E      1
Run Code Online (Sandbox Code Playgroud)

表示长度最终为1的所有行.

长度是一numeric列.

编程语言非常简单,但对SQL来说似乎并不自然.我怎样才能有效而简单地做到这一点?我唯一的想法是将字段转换为Text然后丢失eveything .然后将其转换为数组并选择数组长度位置的字母.这将是可行的,但它似乎是一个非常糟糕的解决方案.

sql postgresql

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

如何在Postgresql中比较两个表?

我有两个相同的表:

A :   id1, id2, qty, unit
B:    id1, id2, qty, unit
Run Code Online (Sandbox Code Playgroud)

(id1,id2)标识每个行,并且在每个表中只能出现一次。

140在表A141 rows表中都有行B。我想找到两个表中都没有出现的所有键(id1,id2)。肯定有1个,但不能有更多(例如,如果每个表具有完全不同的数据)。

我写了这个查询:

(TABLE a EXCEPT TABLE b)
UNION ALL
(TABLE b EXCEPT TABLE a) ;
Run Code Online (Sandbox Code Playgroud)

但这不起作用。它比较整个表,我不在乎qty或者unit是不同的,我只在乎id1,id2

sql postgresql

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

标签 统计

postgresql ×6

sql ×6

c ×1

printf ×1

python ×1

row ×1

types ×1

window-functions ×1

wxpython ×1