Mysql 使用“NOT BETWEEN”约束查询不同的记录列表
我试图构造一个查询,在对另一个表中的日期字段应用“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 如何获得不
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'