我想使用类似于以下的查询来检索中的所有行events
至少有一个对应的event_attendances
行为'male'
and 'female'
。下面的查询不返回任何行(其中肯定有一些events
具有event_attendances
来自两种性别)。
有没有一种方法可以在不使用子查询的情况下执行此操作(由于在我的应用程序中生成 SQL 的方式,子查询对我来说实现起来会困难得多)?
SELECT * FROM events e
LEFT JOIN event_attendances ea ON (e.id = ea.event_id)
GROUP BY e.id
HAVING ea.gender = 'female' AND ea.gender = 'male'
Use
HAVING sum(ea.gender = 'female') > 0
AND sum(ea.gender = 'male') > 0
or
HAVING count(distinct ea.gender) = 2
顺便说一句,您应该在分组时使用子查询来获取所有数据。
SELECT *
FROM events
where id in
(
SELECT events.id
FROM events
LEFT JOIN event_attendances ON (events.id = event_attendances.event_id)
GROUP BY events.id
HAVING count(distinct event_attendances.gender) = 2
)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)