【问题标题】:Postgresql - why cant I compound queries on schemas properly?Postgresql - 为什么我不能正确地对模式进行复合查询?
【发布时间】:2016-10-12 20:01:05
【问题描述】:

大家好,希望这很简单。我只学习了一个简单的 SQL 课程,现在正试图将它应用到一个真正的 postgres 数据库中。我遇到的直接困难是在模式级别(多个模式)处理事情,而我所学到的一切只处理在单个模式中的多个表之间进行查询。

我正在尝试使用 one step more than this questioner 并按模式过滤,但事情对我来说表现得很奇怪

这就是我的意思。这个查询返回我期望的结果(并且被提升straight from this SO example):

所以到目前为止,鉴于我的 sql 培训,我认为我可以获取输出并进一步完善它。

select table_name
from (select table_name, table_schema from information_schema.columns where column_name = 'user_id')
where table_schema = "web_app"

这样做会产生一个非常奇怪的错误:

为什么将明显是字段的内容视为列?这个derived_table1 是什么? (大概是复合查询?)

在极不可能的情况下,这是一个软件问题,我正在使用 Navicat premium 9.1.2 并连接到 amazon redshift。

【问题讨论】:

  • "web_app" 是一个标识符。字符串常量需要放在单引号中:'web_app'postgresql.org/docs/current/static/…
  • 上帝。没有人说过双引号与单引号不同。这在语法上对我来说仍然没有意义,但它是正确的答案。非常感谢。
  • 嗯,这就是 70 年代 SQL 语言的指定方式

标签: sql postgresql schema navicat


【解决方案1】:
  • 与颜色有关,我想它与您的工具有关,关键字是这样着色的。 'table_name' 似乎被视为关键字。检查关键字列表并在必要时进行更正。
  • 您编写的查询错误。请删除“table_schema”。
  • 如果从选择中进行选择,则数据库引擎会将返回的表列表视为派生的。该列表是在运行时计算的,优化这些查询并不容易。

【讨论】:

  • 感谢鲁迪,但另一个答案是更直接的正确答案。反正你是对的,因为那个人只是把它作为评论留下了。
【解决方案2】:

你好未来有同样问题的人,请参阅 a_horse_with_no_name 的评论。这就是我的问题的正确答案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-14
    • 2018-08-17
    • 1970-01-01
    • 2014-02-06
    • 1970-01-01
    相关资源
    最近更新 更多