从系统表中选择名称并从此表中选择
Posted
技术标签:
【中文标题】从系统表中选择名称并从此表中选择【英文标题】:Select name from system table and select from this table 【发布时间】:2018-08-01 08:17:35 【问题描述】:我需要从系统表中动态获取表名,并对该表示例执行选择查询:
SELECT "schema"+'.'+"table" FROM SVV_TABLE_INFO WHERE "table" LIKE '%blabla%'
它返回my_schema.the_main_blabla_table
得到这个表名后,我需要执行:
SELECT * FROM my_schema.the_main_blabla_table LIMIT 100
是否可以在单个查询中进行?
【问题讨论】:
不是查询。除非你查询你准备的函数 【参考方案1】:如果您在“from”之后谈论选择子查询,我可以说您可以这样做。
你会得到这样的东西:
SELECT * FROM
(
SELECT "schema"+'.'+"table" FROM SVV_TABLE_INFO WHERE "table" LIKE '%blabla%'
)
LIMIT 100
不幸的是,我无法在你的数据上测试它,但我对结果非常感兴趣,因为我从来没有做过这样的事情。如果我的问题不正确,请告诉我。
【讨论】:
感谢您的尝试,但您的代码 sn-p 以另一种方式工作。嵌套查询返回一个数据集,外部选择尝试过滤此数据集,但不对返回的表名执行查询。而返回的结果正是内部选择返回的结果,只有100多行才会影响它:)【参考方案2】:Amazon Redshift 不支持获取查询的输出并将其用作另一个查询的一部分。
您的应用程序将需要查询 Redshift 以获取相关的表名,然后再次调用 Redshift 以查询该表。
【讨论】:
以上是关于从系统表中选择名称并从此表中选择的主要内容,如果未能解决你的问题,请参考以下文章
从数据库系统表中选择所有索引,根据Oracle中的索引聚合数据