来自组的最高进入和使用具有的另一个值进行比较

时间:2013-11-29 14:39:31

标签: mysql sql optimization max having

这就是我想要的:

查看从同一个FK创建的最高值是否超过X天。

这是数据的结构(这不是下面查询的结果):

TABLE_1

id     |      FK_table_2      |     created
-------------------------------------------------------
1      |      20              |     2013-11-12 12:13:14
2      |      20              |     2013-11-12 11:10:12
3      |      21              |     2013-10-02 12:53:20
4      |      21              |     2013-09-02 12:54:20

注意:执行子查询将会变慢。

我想出的是:

SELECT *
FROM table_1
GROUP BY FK_table_2
HAVING MAX(created) < NOW() - INTERVAL 3 DAY

我担心 HAVING MAX(已创建)没有garantuee来使用最高创建。

还有其他方法吗?

2 个答案:

答案 0 :(得分:0)

我认为您不需要使用MAX子句,您可以选择超过3天的所有行并对其进行处理。

SELECT DISTINCT FK_table_2 FROM table_1
WHERE created > NOW() - INTERVAL 3 DAY;

更新这不起作用: - (

答案 1 :(得分:0)

试试这个

SELECT FK_table_2,max(created)
FROM table_1
where created < NOW() - INTERVAL 3 DAY
GROUP BY FK_table_2