首页 > 解决方案 > 抓取表格中的所有行并抓取条件所在的一行

问题描述

我有一个整数列,表中几乎所有行都设置为 1,大约 10 行设置为 2,6 行设置为 3。我想从我的表中选择该列不等于 3 的所有行,但获取它等于 3 的最近更新的行。我还有一个 updated_at 列,它是一个日期列。

这是我到目前为止提出的sql。

SELECT * 
  FROM mytable 
  LEFT JOIN (SELECT * 
               FROM mytable 
              WHERE spec_id=3 
              ORDER BY updated_at DESC LIMIT 1) mytable2 
         ON mytable.id=mytable2.id

但是,此语句会抓取我的所有 6 行,其中 spec_id 设置为 3。

请帮忙。

标签: sqlpostgresql

解决方案


只需使用union all

(SELECT * FROM mytable WHERE spec_id=3 ORDER BY updated_at DESC LIMIT 1)
UNION ALL
 SELECT * FROM mytable WHERE spec_id!=3

推荐阅读