当前位置: 首页 > 知识库问答 >
问题:

Postgres:为什么我需要在max()中引用列名?[重复]

佘缪文
2023-03-14

所以我遇到了以下让我惊讶的行为。我最初认为DateTime可能是postgres数据类型,但BidOpen呢?还有一个有趣的事情是错误消息中列名的情况。我几乎觉得这与未引用的名称不区分大小写有关。为什么我需要用引号包围列名才能查询工作?

mydatabase=# select max("DateTime") from fx.candle;
         max
---------------------
 2019-04-26 20:59:00
(1 row)

mydatabase=# select max(DateTime) from fx.candle;
ERROR:  column "datetime" does not exist
LINE 1: select max(DateTime) from fx.candle;
                   ^
HINT:  Perhaps you meant to reference the column "candle.DateTime".
mydatabase=# select max(BidOpen) from fx.candle;
ERROR:  column "bidopen" does not exist
LINE 1: select max(BidOpen) from fx.candle;
                   ^
HINT:  Perhaps you meant to reference the column "candle.BidOpen".
mydatabase=# select max("BidOpen") from fx.candle;
   max
---------
 125.816
(1 row)

模式如下所示:

mydatabase=# \d fx.candle;
                                        Table "fx.candle"
  Column   |            Type             |                            Modifiers
-----------+-----------------------------+-----------------------------------------------------------------
 id        | integer                     | not null default nextval('fx.candle_id_seq'::regclass)
 DateTime  | timestamp without time zone |
 BidOpen   | double precision            | not null
 BidHigh   | double precision            | not null
 BidLow    | double precision            | not null
 BidClose  | double precision            | not null
 AskOpen   | double precision            | not null
 AskHigh   | double precision            | not null
 AskLow    | double precision            | not null
 AskClose  | double precision            | not null
 symbol_id | integer                     |
Indexes:
    "candle_pkey" PRIMARY KEY, btree (id)
Foreign-key constraints:
    "candle_symbol_id_fkey" FOREIGN KEY (symbol_id) REFERENCES fx.symbol(id)

共有1个答案

蒋俊
2023-03-14

我的理解是,Postgres对于列和表名不区分大小写,除非您在开始时使用双引号创建它们。如果是这样的话,那么您需要永远使用双引号引用它们,以确保使用正确的大小写文字。

因此,为了避免当前的情况,还应该避免以区分大小写的方式创建列/表名。

您的创建表应该如下所示:

create table fx.candle (
    id integer not null default nextval('fx.candle_id_seq'::regclass),
    ...
    datetime timestamp without time zone   -- NO quotes here; important!
    ...
)
 类似资料:
  • 问题内容: 我知道弱引用是垃圾收集器的摆布,我们不能保证弱引用会存在。我认为没有必要提供较弱的参考,但可以确定应该有一个理由。 为什么我们需要Java中的弱引用? Java中弱引用的实际(某些)用法是什么?如果您可以分享您在项目中的使用方式,那就太好了! 问题答案: 使用弱哈希图实际上通常是一个坏主意。首先,很容易出错,但更糟糕的是,它通常用于实现某种缓存。 这意味着以下内容:您的程序在一段时间内

  • 让我们考虑下面的PoxGrES查询: 当我删除周围的引号时,查询无法正确响应,但当我删除周围的引号时,查询就不能正确响应了。为什么?在这种情况下,正确的查询编写方法是什么,布尔列周围没有引号,文本列周围没有引号?还有别的吗?

  • 问题内容: 据我所知,如果字体包含空格,则需要使用双引号或单引号,例如: 但是在Google字体上,我也看到了 有些人甚至这样使用它: 我觉得这很奇怪,因为以下方法也可以: 那么CSS中字体名称周围引号的正确用法是什么? 问题答案: 您可以随时把一个特定的字体系列名称在引号,双或单,所以,和是等价的。仅CSS定义的通用字体系列之类的名称必须不带引号。 与流行的看法相反,字体名称由空格分隔的名称组成

  • 问题内容: 我将稍微解释一下我的脚本,以便您可以理解我的问题。 基本上我做了一个脚本来检查SOCKS5是还是。 当我在上面测试我的脚本时,它运行良好,但是当我在Windows上对其进行测试时,直到我将以下行添加到: 谁能向我解释为什么我在Windows中需要此行,而在Linux服务器上却不需要? 问题答案: SSL证书上的此cURL手册页介绍了连接到SSL / TLS受保护主机时 证书验证 的过程

  • 我在互联网上找到了例子,但这并没有给我充分的理解。使用WebFlux时的标准CRUD。 路由器: 处理程序: 我是对的还是这个说法错了?

  • 问题内容: 训练期间需要调用该方法。但是文档不是很有帮助 为什么我们需要调用此方法? 问题答案: 在中,我们需要在开始进行反向传播之前将梯度设置为零,因为PyTorch 会 在随后的向后传递中 累积梯度 。在训练RNN时这很方便。因此,默认操作是在每次调用时累积(即求和)梯度。 因此,理想情况下,当您开始训练循环时,应该正确进行参数更新。否则,梯度将指向预期方向以外的其他方向,即朝向 最小值 (或