gpt4 book ai didi

sql - postgreSQL 如何获取 UNION 查询的每个 SELECT 返回的元组数?

转载 作者:行者123 更新时间:2023-11-29 13:02:13 24 4
gpt4 key购买 nike

我有一个查询由两个 SELECT 查询组成。每个 SELECT 查询都会返回一个 info。我对获取每个 SELECT 查询返回的元组数很感兴趣。

我想做这样的事情:

SELECT table1.info AS info, num_result_tuple()
FROM table1, table2
WHERE table1.info < table2.info
UNION
SELECT table3.info AS info, num_result_tuple()
FROM table3, table4
WHERE table3.info < table4.info

其中 num_result_tuple() 必须表示每个简单查询找到的元组数。

postgresql 有这样的函数吗?还是有另一种方法来实现这一目标?

最佳答案

您可以为此使用窗口函数:

SELECT table1.info AS info, count(*) over () as part_count
FROM table1, table2
WHERE table1.info < table2.info
UNION
SELECT table3.info AS info, count(*) over ()
FROM table3, table4
WHERE table3.info < table4.info;

您可能需要 UNION ALL 而不是 UNIONUNION 将删除两个选择部分之间的重复行。如果您知道不能有任何重复项(或者您确实想返回它们)UNION ALL 会更快。

如果您需要从原始查询中删除重复项,添加 count() 将更改结果。想象一下以下部分结果:

第一个查询:

info | part_count-----+-----------   a | 1 

第二个查询:

info | part_count-----+-----------   a | 2    b | 2

工会会回来

info | part_count-----+-----------   a | 1   a | 2    b | 2

没有计数的查询会返回

info ----   a    b 

关于sql - postgreSQL 如何获取 UNION 查询的每个 SELECT 返回的元组数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26276459/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com