暂无图片
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
愤怒的蜗牛
2022-11-10
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏