DISTINCT BY MAX()?

Joh*_*ona 5 mysql sql

如何获得TypeID具有最大值的不同行EffectivityDate

原始表

-----------------------------------------
| ID | TypeID | Value | EffectivityDate |
-----------------------------------------
|  1 |      1 |   2.3 |      1990-01-01 |
|  2 |      1 |   3.4 |      1999-10-31 |
|  3 |      2 |   1.1 |      1990-01-01 |
|  4 |      2 |   2.2 |      1999-10-31 |
|  5 |      3 |   6.1 |      1999-10-31 |
-----------------------------------------
Run Code Online (Sandbox Code Playgroud)

查询结果

-----------------------------------------
| ID | TypeID | Value | EffectivityDate |
-----------------------------------------
|  2 |      1 |   3.4 |      1999-10-31 |
|  4 |      2 |   2.2 |      1999-10-31 |
|  5 |      3 |   6.1 |      1999-10-31 |
-----------------------------------------
Run Code Online (Sandbox Code Playgroud)

有帮助吗?

Joh*_*Woo 11

您可以EffectiveDate在子查询中获得最大值,然后使用自己的表再次加入它

SELECT  a.*
FROM    tableName a
        INNER JOIN
        (
            SELECT TypeID, MAX(EffectivityDate) maxDate
            FROM tableName
            GROUP BY TypeID
        ) b ON  a.TypeID = b.TypeID AND
                a.EffectivityDate = b.maxDate
Run Code Online (Sandbox Code Playgroud)

SQLFiddle演示

  • 这里有一个简单的方法,复制上面的表,返回SQLFiddle,单击上面的`TEXT TO DDL`然后单击`追加到DDL`顺便说一句,SQLFiddle是非常神奇的工具!:d (4认同)

Joe*_*eph 6

试试这个:

select * 
from   your_table t
join
       (select TypeID ,max(EffectivityDate ) as EffectivityDate 
        from your_table
        group by TypeID )a
on   t.TypeID =a.TypeID 
and  t.EffectivityDate =a.EffectivityDate 
Run Code Online (Sandbox Code Playgroud)