Order table 被编译器读取为 ORDER 命令

Order table being read as ORDER command by the compiler

我将这个 sql 语句存储在一个字符串变量中

SELECT
    o.id_order,
    o.registerdate,
    i.latest_invoice,
    d.latest_delivery 
  FROM
    order o 
  JOIN
    (
      SELECT
        id_address,
        max(registerdate) as latest_invoice 
      FROM
        invoice 
      GROUP BY
        id_address
    ) i     
      ON o.id_address = i.id_address  
  JOIN
    (
      SELECT
        id_address,
        max(registerdate) as latest_delivery 
      FROM
        delivery 
      GROUP BY
        id_address
    ) d      
      ON o.id_address = d.id_address  
  WHERE
    o.id_address = '189'

当我执行查询时,我在 order o 的位置得到一个错误,因为编译器认为它是 ORDER BY 命令。你知道我怎样才能避免这种情况吗?

您不应该使用保留关键字作为 table 名称,但如果您坚持要 have to use double quotes:

from "order" o

请注意,带双引号的名称区分大小写。根据您创建 table 的方式,您可能需要 "ORDER""Order"。在 psql 中,您应该使用 \d 命令检查大小写是否正确。