在我的数据库中,有四种类型的个人,youngOrcoldOrcyoungHumanoldHuman

个人属于以日期范围为条件的类型。因此,对于每种类型,我都有这样的表:

youngOrcList
-------------------
personal_id,
开始日期,
结束日期


这意味着具有individual_id的人是开始日期和结束日期之间的youngOrc。他可能不在这个范围内。同样,我有一个youngHuman表。

现在,我要过滤的真正感兴趣的表是事件:

大事记
------------------
source_individual_id
target_individual_id
活动日期


事件表记录了我领域中两个人之间的所有事件。我要过滤,以便只在eventsyoungOrc之间选择youngHuman

因此,这是一种“嵌套”条件,在该条件下,我同时需要events.source_individual_id IN youngOrcListevents.event_date BETWEEN youngOrcList.start_date AND youngOrcList.end_date。如何使这项工作?

(此外,关于更好的标题的任何建议都是很好的。我什至不知道该怎么称呼,因此无法有效地使用Google。)

最佳答案

这将为您提供youngOrc和youngHuman之间的所有事件:

SELECT *
FROM
 Events e
 WHERE EXISTS (
       SELECT * FROM youngHumanList
       WHERE individual_id IN (e.source_individual_id, e.target_individual_id)
             AND e.event_date BETWEEN start_date AND end_date)
   AND EXISTS (
       SELECT * FROM youngOrcList
       WHERE individual_id IN (e.source_individual_id, e.target_individual_id)
             AND e.event_date BETWEEN start_date AND end_date)

关于mysql - MySQL查询嵌套在哪里条件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25895230/

10-12 01:25
查看更多