我有一张这样的表
--------------------
| 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
问题是我没有相同的结果。我想找到一种方法来使用第二个版本与第一个查询具有相同的结果。
也许我可以使用循环并选择每个结果的并集。这甚至可能吗?
欢迎任何其他想法?
答案 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;