以下PostgreSQL SELECT查询始终返回一个结果,因为performance.query_plan表有多个具有不同TIMESTAMP值的条目:

SELECT * FROM
  performance.query q,
  performance.query_plan AS qp
WHERE
  q.idx = qp.queryidx
  AND q.newplanneeded > qp.ts
LIMIT 1;

performance.query_plan表中的这几个条目中,我只对具有最新时间戳值(存储在q.newplanneeded列中)的条目感兴趣。在WHERE条件应该等于qp.ts表中最新添加的行的情况下,如何表示performance.query_plan

最佳答案

SELECT  (q).*, (qp).*
FROM    (
        SELECT  q,
                (
                SELECT  qp
                FROM    query_plan qp
                WHERE   qp.queryidx = q.idx
                ORDER BY
                        ts DESC
                LIMIT   1
                ) qp
        FROM    query q
        ) qv
WHERE   (q).newplanneeded > (qp).ts
ORDER BY
        (q).idx
LIMIT   1

07-26 05:07