Java 这就是为什么我要寻找一个子句,它可以简单地过滤掉其他条目,而不是选择单个字段。类似于“m.attendee having max(m.meetingDate)从会议m组中选择m”这样的话,我回家后必须尝试一下,以确保每个与会者的最大会议日期,而不是绝对的最

Java 这就是为什么我要寻找一个子句,它可以简单地过滤掉其他条目,而不是选择单个字段。类似于“m.attendee having max(m.meetingDate)从会议m组中选择m”这样的话,我回家后必须尝试一下,以确保每个与会者的最大会议日期,而不是绝对的最,java,sql,jpa,jpa-2.0,jpql,Java,Sql,Jpa,Jpa 2.0,Jpql,这就是为什么我要寻找一个子句,它可以简单地过滤掉其他条目,而不是选择单个字段。类似于“m.attendee having max(m.meetingDate)从会议m组中选择m”这样的话,我回家后必须尝试一下,以确保每个与会者的最大会议日期,而不是绝对的最大会议日期。我理解半加入,但什么是反加入?好问题。5年过去了,现在看起来确实是多余的,不是吗。我不确定我手头是否还有那个来源来解释我为什么需要那个。 Meeting ID | Attendee ID | Meeting Date 1


这就是为什么我要寻找一个子句,它可以简单地过滤掉其他条目,而不是选择单个字段。类似于“m.attendee having max(m.meetingDate)从会议m组中选择m”这样的话,我回家后必须尝试一下,以确保每个与会者的最大会议日期,而不是绝对的最大会议日期。我理解半加入,但什么是反加入?好问题。5年过去了,现在看起来确实是多余的,不是吗。我不确定我手头是否还有那个来源来解释我为什么需要那个。
Meeting ID | Attendee ID | Meeting Date
1          | 1           |  6/1/2011
2          | 2           |  6/1/2011
3          | 1           |  6/6/2011
4          | 3           |  6/6/2011
Meeting ID | Attendee ID | Meeting Date
2          | 2           |  6/1/2011
3          | 1           |  6/6/2011
4          | 3           |  6/6/2011
select m from Meeting m 
where m.meetingDate in 
    ( select max(meet.meetingDate) 
      from Meeting meet group by meet.attendee )
SELECT MAX(m.MeetingDate) FROM Meeting m
SELECT m.AttendeeId, MAX(m.MeetingDate) from Meeting m GROUP BY m.AttendeeId
select m from Meeting m 
    where m.meetingDate = 
        (select max(m1.meetingDate) 
            from Meeting m1 
            where m1.attendee = m.attendee )
    and not exists 
        (select m2 from Meeting m2 
            where m2.attendee = m.attendee 
            and m2.meetingDate > m.meetingDate)
select * from Meeting ALL
join ( select max(meetingDate) as newest, attendee
from Meeting group by attendee ) LATEST
on ALL.meetingDate = LATEST.newest AND ALL.attendee = LATEST.attendee
CREATE VIEW
SELECT * FROM meetings 
WHERE concat(attendee_id, meeting_date) IN
(SELECT concat(attendee_id, max(meeting_date)) FROM meetings GROUP BY attendee_id)
attendee_id*65536 + date_part('epoch', meeting_date)/(60*60*24)
SELECT * FROM meetings
WHERE attendee_id*65536 + date_part('epoch', meeting_date)/(60*60*24)
IN (SELECT attendee_id*65536 + date_part('epoch', max(meeting_date))/(60*60*24) from meetings GROUP BY attendee_id);
SELECT * FROM meetings m1 WHERE m1.meeting_date=
(SELECT max(m2.meeting_date) FROM meetings m2 WHERE m2.attendee_id=m1.attendee_id);
SELECT * FROM meetings m
JOIN (SELECT attendee_id, max(meeting_date) from meetings GROUP BY attendee_id) attendee_max_date
ON attendee_max_date.attendee_id = m.attendee_id;</code>
SELECT * FROM meetings WHERE concat(attendee_id, meeting_date) IN
(SELECT concat(attendee_id, max(meeting_date)) from meetings GROUP BY attendee_id);
SELECT * FROM meetings
WHERE attendee_id*65536 + date_part('epoch',meeting_date)/(60*60*24)
IN (SELECT attendee_id*65536 + date_part('epoch',max(meeting_date))/(60*60*24) from meetings GROUP BY attendee_id);