MySQL /主义查询检索大于日期的所有元素

时间:2019-05-02 12:55:45

标签: mysql sql group-by doctrine

我有一个Symfony项目,其中有2个实体,例如Session 1 <-> n Timeslots(还有更多其他实体)。

我的问题是我找不到一个查询,该查询将检索所有时隙都大于给定日期的会话列表。是否可以在一个查询中完成?

我尝试使用MIN(简化版,没有与其他实体的额外JOIN):

SELECT s.id 
FROM session s
JOIN timeslot t ON t.sessionId = s.id
HAVING MIN(t.timelotDate) > '2019-05-05';

但是我没有通过此查询检索任何元素。

我为此做了一个sqlfiddle:
http://www.sqlfiddle.com/#!9/4b485b/5

2 个答案:

答案 0 :(得分:0)

使用max()group by

SELECT s.id 
FROM session s
JOIN timeslot t ON t.sessionId = s.id group by s.id
having max(t.timelotDate) > '2019-05-05'

答案 1 :(得分:0)

您忘记了GROUP BY

SELECT session.id
FROM session
JOIN timeslot ON timeslot.sessionId = session.id
GROUP BY session.id
HAVING MIN(timeslot.timeslotDate) > '2019-05-05'

另一个可能是:

SELECT *
FROM session
WHERE NOT EXISTS (
    SELECT 1
    FROM timeslot
    WHERE timeslot.sessionId = session.id
    AND timeslot.timeslotDate <= '2019-05-05'
)