Postgres - 查找LIKE和MAX / UNION倍数的记录

时间:2017-09-20 14:10:40

标签: postgresql select max union sql-like

我的表中列有值:

'2017-12-1', '2017-12-5', '2017-12-15', '2015-12-1', '2016-12-25', '2012-12-18'

现在我想选择列LIKE '2017-12'的行和列LIKE '2015-12'的联合行。因此,对于LIKE '2017-12',我将获得3条记录,对于LIKE '2015-12',我将获得1条记录。现在我想联合他们,但只采取' 2017-12-15'因为它是MAX。我尝试了ORDER BY LIMIT 1,但它不能与UNION合作。

1 个答案:

答案 0 :(得分:0)

这对我有用,假设列将日期存储为字符类型。

SELECT x,MAX(CAST(substring(x from 9 for 10) AS integer)) AS m
FROM tmp1 WHERE substring(x from 1 for 7)='2015-12' OR substring(x from 1 for 7)='2017-12'
GROUP BY x ORDER BY x desc LIMIT 1

如果您要存储日期类型:

SELECT x FROM tmp WHERE to_char(x,'YYYY-MM')='2017-12' OR to_char(x,'YYYY-MM')='2015-12'
GROUP BY xORDER BY x desc LIMIT 1

希望它有所帮助。