组合多个 SELECT 语句

2024-01-05

我已经使用 Excel 生成了许多SELECT来自具有大量相同模式的数据库的模式名称列表的语句:

select result from foo.table limit 1;
select result from bar.table limit 1;
select result from doo.table limit 1;

(foo, bar & doo是我的模式的示例,实际上有数百个)。

Each SELECT将仅返回一个结果。我只想要一栏result具有与模式一样多的行。然后我可以根据架构名称将其复制回 Excel 中。

当我运行上面的查询时,我得到 1 行,其他行被丢弃:



Query result with 1 row discarded.

Query result with 1 row discarded.

Total query runtime: 40 ms.
1 row retrieved.
  

我尝试过使用UNION ALL,但是limit 1我用来确保每个模式表只返回一行,这似乎阻止了这种情况的工作。

如何防止其他行被丢弃,或者编写一个查询以更有效的方式返回我需要的值(两列 - schema_name,结果 - 每个模式一行)?


将各个子语句括在括号中以使语法明确:

(SELECT result FROM tbl1 LIMIT 1)
UNION ALL
(SELECT result FROM tbl2 LIMIT 1)

The 手册关于UNION https://www.postgresql.org/docs/current/sql-select.html#SQL-UNION关于这个问题非常明确:

select_statement is any SELECT没有一个声明ORDER BY, LIMIT, FOR UPDATE, or FOR SHARE条款。 (ORDER BY and LIMIT可以附上 如果子表达式括在括号中,则为子表达式。没有 括号中,这些条款将被视为适用于结果UNION,而不是其右侧的输入表达式。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

组合多个 SELECT 语句 的相关文章

随机推荐