gpt4 book ai didi

MySQL 在未知数量的日期间隔之间进行选择

转载 作者:行者123 更新时间:2023-11-29 01:05:05 25 4
gpt4 key购买 nike

我目前有两张 table ,一张叫游戏,一张叫回合。这是帮助的结构:

回合

+-------------+----------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+----------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| schedule_id | int(11) | NO | MUL | NULL | |
| open_date | datetime | NO | | NULL | |
| close_date | datetime | NO | | NULL | |
| start_date | datetime | NO | | NULL | |
| end_date | datetime | NO | | NULL | |
+-------------+----------+------+-----+---------+----------------+

游戏

+-------------+----------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+----------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| schedule_id | int(11) | NO | MUL | NULL | |
| team_a | int(11) | NO | MUL | NULL | |
| team_b | int(11) | NO | MUL | NULL | |
| winner | int(11) | YES | MUL | NULL | |
| date | datetime | NO | | NULL | |
+-------------+----------+------+-----+---------+----------------+

现在,圆 table 是一堆具有指定日期范围的回合,游戏设置在回合日期范围内(但并非总是如此)。无论如何,我想做的是选择多轮间隔之间的所有游戏。所以如果我有三轮间隔,

round 1 - nov 13 to nov 15
round 2 - nov 20 to nov 25
round 3 - dec 1 to nov 10

如何在不执行多个 SQL 语句的情况下只选择那些日期段之间的游戏。本质上我最终想要这样的东西:

SELECT * 
FROM games
WHERE date BETWEEN round1.start_date AND round1.end_date OR
date BETWEEN round2.start_date AND round2.end_date OR
date BETWEEN round3.start_date AND round3.end_date

但我不知道我会有多少回合。我也不能使用 max a min 因为这些间隔之间可能有我不想要的回合。现在我唯一的解决方案是我为所有回合做一个选择,然后通过 PHP 为每个间隔做一个选择。我希望可能有更好、更有效的方法来实现这一点。

希望这是有道理的,谢谢!

更新:

发布这个问题后,我想到了这样一个查询:

SELECT * 
FROM games INNER JOIN
rounds ON games.`date` BETWEEN rounds.start_date AND rounds.end_date

这样的事情有意义吗?好像可以,但是我从来没有这样加入过,所以我不知道我会遇到什么类型的影响。

最佳答案

您的更新非常接近......

select `games`.* from games join rounds on (`games`.`date` < `rounds`.`end_date` AND `games`.`date` > `rounds`.`start_date`);

关于MySQL 在未知数量的日期间隔之间进行选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4135860/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com