检索具有最大日期的每个组的行
Retrieve row for each group having the maximum date
我有这个MySQLtable:
ID Number Date
1 4 2015-05-30
2 4 2016-03-15
3 5 2016-04-01
4 5 2016-05-01
我想获得唯一的编号,但只获得日期最长的编号。结果必须只有:
ID Number Date
2 4 2016-03-15
4 5 2016-05-01
我试过了:
SELECT
*
FROM emp_events ee
Date = (SELECT MAX(Date) FROM emp_events ee1 WHERE ee1.Number = ee.Number));
但没有得到所有想要的结果。
Try This
您必须 GROUP BY number
并在查询
中找到最大日期集 ORDER BY date ASC
SELECT e.*
FROM(
SELECT ee.*
FROM `emp_events` AS ee
ORDER BY ee.date ASC
) AS e
GROUP BY e.number
您可以通过 INNER JOIN
完成的一种方法
SELECT
E.*
FROM emp_events E
INNER JOIN(
SELECT
Number,
MAX(Date) max_date
FROM emp_events ee
GROUP BY Number
) AS t
ON E.Number = t.Number AND E.Date = t.max_date
另一种方法是使用 IN
:
SELECT
E.*
FROM emp_events E
WHERE (E.Number,E.Date) IN
(
SELECT
Number,
MAX(Date) max_date
FROM emp_events ee
GROUP BY Number
)
我有这个MySQLtable:
ID Number Date
1 4 2015-05-30
2 4 2016-03-15
3 5 2016-04-01
4 5 2016-05-01
我想获得唯一的编号,但只获得日期最长的编号。结果必须只有:
ID Number Date
2 4 2016-03-15
4 5 2016-05-01
我试过了:
SELECT
*
FROM emp_events ee
Date = (SELECT MAX(Date) FROM emp_events ee1 WHERE ee1.Number = ee.Number));
但没有得到所有想要的结果。
Try This
您必须 GROUP BY number
并在查询
ORDER BY date ASC
SELECT e.*
FROM(
SELECT ee.*
FROM `emp_events` AS ee
ORDER BY ee.date ASC
) AS e
GROUP BY e.number
您可以通过 INNER JOIN
SELECT
E.*
FROM emp_events E
INNER JOIN(
SELECT
Number,
MAX(Date) max_date
FROM emp_events ee
GROUP BY Number
) AS t
ON E.Number = t.Number AND E.Date = t.max_date
另一种方法是使用 IN
:
SELECT
E.*
FROM emp_events E
WHERE (E.Number,E.Date) IN
(
SELECT
Number,
MAX(Date) max_date
FROM emp_events ee
GROUP BY Number
)