Mysql 使用“NOT BETWEEN”约束查询不同的记录列表

Mysql 使用“NOT BETWEEN”约束查询不同的记录列表,mysql,sql,Mysql,Sql,我试图构造一个查询,在对另一个表中的日期字段应用“NOT BETWEEN”约束后,该查询将为我提供一个不同记录的列表 鉴于以下情况 User Table: magicID name 100 Greg 200 Fred Event Table: magicID date 100 2011-02-24 100 2011-02-23 100 2011-02-22 200 2011-02-22 如何获得不

我试图构造一个查询,在对另一个表中的日期字段应用“NOT BETWEEN”约束后,该查询将为我提供一个不同记录的列表

鉴于以下情况

User Table:
magicID    name
100        Greg
200        Fred

Event Table:
magicID    date
100        2011-02-24
100        2011-02-23
100        2011-02-22
200        2011-02-22
如何获得不在特定日期范围内的不同用户的列表?我希望这是非常明确的。如果我在寻找2011-02-23和2011-02-24之间没有事件记录的用户,我希望得到一个结果

200    Fred
这就是目标。但是下面的查询提供了所有用户。我希望“非中间”约束是明确的

SELECT DISTINCT users.* FROM users, events WHERE events.date NOT BETWEEN '2011-02-23' AND '2011-02-24'
此查询返回所有用户

100    Greg
200    Fred
我遗漏了一些非常基本的东西…

Select ...
From users
Where Not Exists    (
                    Select 1
                    From events As E1
                    Where E1.magicid = users.magicid
                        And E1.date Between '2011-02-03' And '2011-02-24'
                    )
:

:

:


你根本没有加入你的桌子。您应该能够使用:

SELECT DISTINCT users.* 
FROM users, events 
WHERE user.magicID = events.magicID
and events.date NOT BETWEEN '2011-02-23' AND '2011-02-24' 

你根本没有加入你的桌子。您应该能够使用:

SELECT DISTINCT users.* 
FROM users, events 
WHERE user.magicID = events.magicID
and events.date NOT BETWEEN '2011-02-23' AND '2011-02-24' 
请尝试此查询

选择不同的用户。* 从用户左侧加入user.magicID=events.magicID上的事件 如果events.date不在“2011-02-23”和“2011-02-24”之间,请尝试此查询

选择不同的用户。* 从用户左侧加入user.magicID=events.magicID上的事件
其中events.date不在'2011-02-23'和'2011-02-24'之间

我尝试过这个,但运气不佳。事实上,我在原始问题中所写的例子应该是这样的。它仍然返回用户,可能是因为有一个超出范围的事件。在这种情况下,@OMG Ponies是要去的方向。我尝试过这个,但没有运气。事实上,我在原始问题中所写的例子应该是这样的。它仍然返回用户,可能是因为有一个超出范围的事件。在这种情况下,@OMG Ponies就是要去的方向。
SELECT DISTINCT users.* 
FROM users, events 
WHERE user.magicID = events.magicID
and events.date NOT BETWEEN '2011-02-23' AND '2011-02-24'