暂无图片
pg中标量子查询长啥样?怎么理解它
我来答
分享
暂无图片 匿名用户
pg中标量子查询长啥样?怎么理解它

标量子查询是啥?

有啥例子没??


这个在oracle或者mysql中有类似的吗?

我来答
添加附件
收藏
分享
问题补充
1条回答
默认
最新
shunwahⓂ️

PG 一个标量子查询是一种圆括号内的普通SELECT查询,它刚好返回一行一列。SELECT查询被执行并且该单一返回值被使用在周围的值表达式中。将一个返回超过一行或一列的查询作为一个标量子查询使用是一种错误(但是如果在一次特定执行期间该子查询没有返回行则不是错误,该标量结果被当做为空)。该子查询可以从周围的查询中引用变量,这些变量在该子查询的任何一次计算中都将作为常量。

例如,下列语句会寻找每个州中最大的城市人口:

SELECT name, (SELECT max(pop) FROM cities WHERE cities.state = states.name)

FROM states;

————————————————

MYSQL 标量子查询:子查询的返回值必须只有一行记录,而且只能有一个列。
语法
基本语法:select * from 数据源 where 字段名 操作符 (select 字段名 from 数据源 where 条件判断);

操作符:包含=、>、<、>=、<=、<>等。
注意:子查询必须括在圆括号中。对于采用这些操作符之一进行的比较,子查询必须返回一个标量;即子查询得到的结果只有一个值。

-- 查询一班和张建分数一样的学生姓名、分数。一班表如下:
mysql> select * from class1_score;
+------+--------+-------+
| id   | name   | score |
+------+--------+-------+
|    1 | 李新   |    67 |
|    1 | 张建   |    75 |
|    1 | 吴浩波 |    80 |
|    1 | 蔡玉婷 |    86 |
|    1 | 余晓庆 |    65 |
|    1 | 张栗   |    75 |
+------+--------+-------+
6 rows in set (0.00 sec)
-- 首先查询标量(张建分数),为一个值。
mysql> select score from class1_score where name='张建';
+-------+
| score |
+-------+
|    75 |
+-------+
1 row in set (0.00 sec)
-- 通过标量(分数)判断和张建一样分数的学生名单。
mysql> select * from class1_score where score=(select score from class1_score where name='张建');
+------+------+-------+
| id   | name | score |
+------+------+-------+
|    1 | 张建 |    75 |
|    1 | 张栗 |    75 |
+------+------+-------+
2 rows in set (0.01 sec)

复制

oracle标量子查询和自己定义函数有时用起来比較方便,并且开发者也常常使用。数据量小还无所谓。数据量大,往往存在性能问题。

https://www.shuzhiduo.com/A/6pdDjk8yJw/

暂无图片 评论
暂无图片 有用 0
打赏 0
愤怒的蜗牛
2022-11-10
回答交流
Markdown


请输入正文
提交
相关推荐
PostgreSQL可以做时序吗?
回答 3
已采纳
可以的,请参考timescaledb,https://www.modb.pro/db/104428
pg中执行计划的存储位置
回答 1
历史执行计划可以使用autoexplain插件,从数据库日志中查看,数据库字典没有。
postgresql 里面可以使用insert overwrite吗?
回答 2
类似upsert语法:insertintoonconflictdoupdate/donothing
是不是postgreSQL 用多线程就能实现全局临时表?
回答 1
是的,PostgreSQL可以使用多线程来实现全局临时表。在PostgreSQL中,全局临时表是一种特殊的表类型,它可以在多个会话之间共享。使用多线程可以提高全局临时表的性能和并发性。
age函数问题
回答 1
这个与事务有关,参考官方文档的这个例子http://postgres.cn/docs/13/routinevacuuming.htmlage列度量从该截断XID到当前事务XID的事务数你查出来是0,说
PostgreSQL 一个存储过程中,多个子存储过程,怎么让它们出错了还继续执行?
回答 2
子存储过程出错时,使用beginendexception异常处理机制可以决定是否继续执行后续的子存储过程或回滚整个事务。
Oracle,PostgreSQL,Mysql中浮点型如何产生inf、-inf,NaN?
回答 1
把你的报错信息,SQL语句,执行的数据库搞出来看看
08006: connection to client lost
回答 2
"2.客户端发起一个查询到数据库服务器(比如长查询)"如果就是一个长查询,如何让这个查询执行下去,而不是执行到一半就中断掉?
pg_settings中的作用级别?
回答 1
有个列&nbsp;context&nbsp;postmaster时重启才生效,这个是实例层面的如果contextuser&nbsp;则这个参数可能被session设置过,setting&lt;&gt;
pg_rewind报错
回答 1
检查或重装pgaudit,重启源库,再运行pgrewind。