微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

postgresql 函数慢慢积累

1、类似oracle的decode,可以这样写:

select (case when order_count = 0 then 1 else order_count end) as oedercount from order

2、类似oracle的NVL方法:coalesce(collect_result,0) 如果collect_result为空,则将其值变成0,否则显示原值


3、表连接时类似on的:using(列名)

一个t1

 num | name
-----+------
   1 | a
   2 | b
   3 | c

t2

 num | value
-----+-------
   1 | xxx
   3 | yyy
   5 | zzz

例如:SELECT * FROM t1 INNER JOIN t2 USING (num);
 num | name | value
-----+------+-------
   1 | a    | xxx
   3 | c    | yyy
(2 rows)


4、NATURAL(natural):USING的缩写形式:它形成一个USING列表, 该列表由那些在两个表里都出现了的字段名字组成。和USING一样,这些字段只在输出表里出现一次

例如:SELECT * FROM t1 NATURAL INNER JOIN t2;

 num | name | value
-----+------+-------
   1 | a    | xxx
   3 | c    | yyy
(2 rows)

我们再来看下on吧:
SELECT * FROM t1 INNER JOIN t2 ON t1.num = t2.num;
num | name | num | value
-----+------+-----+-------
   1 | a    |   1 | xxx
   3 | c    |   3 | yyy
(2 rows)
可以看出on,using,natural很相似,on没有剔除输出中的相同字段,而using,natural就去掉了,前提是量表中有相同的字段

ON子句是最常见的连接条件的类型:它接收一个WHERE子句里用的一样的布尔值表达式。 如果两个分别来自T1T2的行在ON表达式上运算的结果为真,那么它们就算是匹配的行。

USING是个缩写的概念:它接收一个用逗号分隔的字段名字列表, 这些字段必须是连接表共有的,最终形成一个连接条件,表示这些字段对必须相同。 最后,JOIN USING输出会为每一对相等的输入字段输出一个字段,后面跟着来自各个表的所有其它字段。 因此,USING (a,b,c)等效于ON (t1.a = t2.a AND t1.b = t2.b AND t1.c = t2.c)只不过是如果使用了ON,那么在结果里ab,和c字段每个都会有两个, 而用USING的时候每个字段就只会有一个

最后,NATURALUSING的缩写形式:它形成一个USING列表, 该列表由那些在两个表里都出现了的字段名字组成。和USING一样,这些字段只在输出表里出现一次。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


项目需要,有个数据需要导入,拿到手一开始以为是mysql,结果是个PostGreSQL的数据,于是装数据库,但这个也不懂呀,而且本系统用的Oracle,于是得解决迁移转换的问题。 总结下来两个思路。1、PostgresToOracle多金的
本文小编为大家详细介绍“怎么查看PostgreSQL数据库中所有表”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么查看PostgreSQL数据库中所有表”文章能帮助大...
错误现象问题原因这是在远程连接时pg_hba.conf文件没有配置正确。  pg_hba.conf文件在Postgre安装文件目录下的data文件夹中。解决方案1、进入到data目录下,找到pg_hba.conf文件
因本地资源有限,在公共测试环境搭建了PGsql环境,从数据库本地localhost访问正常,在相同网段的远程机器访问报如下错误
wamp 环境 这个提示就是说你的版本低于10了。 先打印php_info(),查看自己的版本(我这边是已经处理后的,之前的忘记截图了)
psycopg2.OperationalError: SSL SYSCALL error: EOF detected 问题提示:exception psycopg2.OperationalError
项目 postgres 连接不上, 所有连接报错 :psql: FATAL: sorry, too many clients already问题原由程序使用连接未及时释放, 连接一直处于 idle 状态处理方式1、 程序里面未释放的连接, 在使用后及时释放
服务器在同一个数据目录上启动了两个PostgreSQL实例(它已经删除postmaster.pid并使用了新的端口号,因此绕过了这种行为的正常保护措施被绕过),导致PostgreSQL的误操作postgresql 报错 FATAL: the database system is
问题原因:数据库崩溃,内存不足造成 或者 数据已损坏,磁盘故障造成首先介绍一下背景,在测试Deepgreen(Greenplum升级版)数据库时,pgbench并发数设置过多,导致数据库卡死了,在进行连接、重启、关闭时,都报同样
第 11 届 PostgreSQL 中国技术大会于 2022 年 1 月 7 日至 9 日在武汉光谷会展酒店成功举办。作为 PostgreSQL 技术领域的年度盛事,postgreSQL 中文社区旨在搭建开放、合作共享的平台,基于开源,创新驱动,共同探讨数据库行业数字化发展方向和未来新机遇。