有没有办法在MySQL范围查询中的整个表上运行MIN?

时间:2013-06-16 02:45:15

标签: mysql

我正在尝试查找表格的最小日期值是否存在于特定范围值内。

因此,对于字段date_created,我希望找到整个表中字段的最小值,因为它存在于特定用户。但后来我想查看是否在查询中,例如在某个月之间,是否该查询中存在该最小表值。

我也使用group by来获取用户的特定最小值。这是我当前的查询,

SELECT user_id,
       Min(date_created) AS first_date
FROM   user_transactions
WHERE  DATE BETWEEN '2013-04-01' AND '2013-05-30'
GROUP  BY user_id

我看到它只返回范围查询中的最小日期值,而不是整个表中的最小日期值。如果表最小值不在范围内,我希望省略该行。反正有吗?

2 个答案:

答案 0 :(得分:3)

根据您编辑的问题:

答案可能是:

SELECT user_id, MIN(date_created) AS first_date
FROM user_transactions
GROUP BY user_id
HAVING first_date BETWEEN '2013-04-01' AND '2013-05-30' ;

答案 1 :(得分:1)

使用子查询为特定用户选择最小date_created。然后检查日期是否在范围内。

SELECT
 u1.user_id, u1.date_created AS first_date
FROM
 user_transactions u1
WHERE
 u1.date_created =
 (
   SELECT MIN(u2.date_created)
   FROM user_transactions u2
   WHERE u2.user_id = u1.user_id
 )
 AND u1.date_created BETWEEN '2013-04-01' AND '2013-05-30'
GROUP BY
 user_id;

工作SQL fiddle