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);