查找最小和最大日期SQL

时间:2015-01-14 17:37:40

标签: sql max min

我想创建一个查询,我只查找具有最早和最新registration_date的成员的详细信息。到目前为止我已经

SELECT member_id, UPPER(name), registration_date 
from db.member WHERE registration_date >=
'2012-01-01' 

我不确定如何找到最小/最大但我只是在设定日期2012-01-01测试它

因此查询应该只返回两个结果 - 最小/最大

提前谢谢

3 个答案:

答案 0 :(得分:1)

您可以在子查询中获得minmax个日期,然后就可以获得结果。

select member_id, upper(name), registration_date
from db.member
cross join (
       select min(registration_date) as minDate, max(registration_date) as maxDate
       from db.member ) t
where registration_date in ( t.minDate, t.maxDate)

或者您可以使用inunion

执行此操作
select member_id, upper(name), registration_date
from db.member
where registration_date in  (
       select min(registration_date) 
       from db.member
       union 
       select max(registration_date) as maxDate
       from db.member ) 

答案 1 :(得分:0)

从表中选择min(日期列),max(日期列);

答案 2 :(得分:0)

类似下面这样的东西,虽然有点子查询,可能会让你最接近你需要的东西。根据SQL(Oracle,SQLServer,MySQL等)的风格,您可以限制IN结果集子查询中member_id选择的子查询。

select member_id, Upper(name) AS name, registration_date 
from db.member 
where member_id in
(
    select Min(member_id) 
    from db.member
    where registration_date =
    (
        select Min(registration_date)
        from db.member
    )
    union all
    select Max(member_id) 
    from db.member
    where registration_date = 
    (
        select Max(registration_date)
        from db.member
    )
)
order by registration_date desc;