【发布时间】:2013-04-02 02:08:20
【问题描述】:
我有这个MySQL 查询:
SELECT
s.student_id,
s.student_firstname,
s.student_lastname,
sd.student_startdate,
sd.student_enddate,
s.isActive,
c.city_name,
ctc.category_name
FROM
students s
INNER JOIN
(SELECT sd1.student_id, sd1.student_startdate, sd1.student_enddate FROM studentdates sd1) sd ON sd.student_id = s.student_id
INNER JOIN
cityselections c ON c.city_id = s.student_city_id
INNER JOIN
coursecategory ctc ON s.student_course_category_id = ctc.category_id
WHERE
sd.student_enddate BETWEEN CURDATE() AND ADDDATE(CURDATE(), INTERVAL 14 DAY)
AND s.student_city_id NOT LIKE '1'
AND s.student_city_id = 18
AND s.isActive = 1
GROUP BY s.student_id
ORDER BY sd.student_enddate ASC , s.student_lastname , s.student_firstname
在studentdates 表中,每个student_id 上可以有多个student_startdate 和student_enddate,但我想选择每个学生MAX(student_enddate)。
如何做到这一点?
【问题讨论】:
-
就用这个功能
MAX(student_enddate); -
是的,到处都试过了,但由于某种原因仍然没有选择最高日期。
-
WHERE sd.student_enddate= (SELECT MAX(sd.student_enddate) FROM tablename 以及如果你想放置任何 where 条件)
-
如果 student_enddate 存储像 2013-08-28 这样的值,MAX(student_enddate) 可能不起作用。我认为日期被转换为一个整数,在计算最大值时只会使用 2013 年。也许使用 MIN()、MAX() 和 DATEDIFF() 会有所帮助。
标签: mysql date select join max