代码之家  ›  专栏  ›  技术社区  ›  Nikita Popov Sean

为什么某些查询失败?

  •  0
  • Nikita Popov Sean  · 技术社区  · 7 年前

    我正在尝试使用knex.js运行以下查询:

    database.raw(
        'SELECT DISTINCT ON(tiger_id) tiger_id, created_at, latitude, longitude, id' +
        'FROM images ' +
        'ORDER BY tiger_id, created_at DESC;'
    )  
    

    任何其他查询都运行良好,但此查询失败,并出现以下错误:

    error: column "tiger_id" does not exist
    at Connection.parseE (/node_modules/pg/lib/connection.js:553:11)
    at Connection.parseMessage (/node_modules/pg/lib/connection.js:378:19)
    at Socket.<anonymous> (/node_modules/pg/lib/connection.js:119:22)
    at Socket.emit (events.js:182:13)
    at Socket.EventEmitter.emit (domain.js:442:20)
    at addChunk (_stream_readable.js:283:12)
    at readableAddChunk (_stream_readable.js:264:11)
    at Socket.Readable.push (_stream_readable.js:219:10)
    at TCP.onStreamRead [as onread] (internal/stream_base_commons.js:94:17)
    

    tigers (如你所见, tiger_id 列存在于此处): tigers table

    使用pgAdmin进行的相同查询的结果(我希望knex查询返回相同的结果): query result

    1 回复  |  直到 7 年前
        1
  •  1
  •   Nikita Popov Sean    7 年前

    问题是我跳过了第一行末尾的空格,因此工作查询是:

    database.raw(
        'SELECT DISTINCT ON(tiger_id) tiger_id, created_at, latitude, longitude, id ' +
        'FROM images ' +                                               // this one ^
        'ORDER BY tiger_id, created_at DESC;'
    )