使用postgresql在循环中选择联盟

时间:2015-02-19 15:37:33

标签: sql postgresql

我有一张这样的表

--------------------
| color |   date   |
--------------------
| red   | 01/01/10 |
| blue  | 01/07/10 |
| ...              |

我想选择每种类型的最大日期。简单的方法(真的)表现不好。即:

   SELECT color, MAX(date) 
     FROM myTable
    WHERE color = ANY(ARRAY('red', 'blue'))
 GROUP BY date;

以下查询有什么好的表现。我认为这是因为日期指数。

    SELECT color, date
      FROM myTable
     WHERE color='red'
  ORDER BY date
     LIMIT 1
问题是我没有相同的结果。我想找到一种方法来使用第二个版本与第一个查询具有相同的结果。

也许我可以使用循环并选择每个结果的并集。这甚至可能吗?

欢迎任何其他想法?

1 个答案:

答案 0 :(得分:4)

为什么需要数组关键字?这不是第一次查询所需要的吗?

SELECT date, MAX(color) 
FROM myTable
WHERE color IN ('red', 'blue')
GROUP BY date;

但你似乎想要:

select color, max(date)
from mytable
group by color;