我得到了2个表格,我保留位置信息和人员位置。我想找到那些没有离开这个地方的人。所以我在这两个表中都有客户端ID和位置ID。在我的位置表中,我知道哪个地方在外面。下面的查询给了我里面的人。如果我使isOutside = 1,它给了我外面的人。所以问题是,一个人可以有条目,其中isOutside等于1或0。我怎么能区分谁拥有isOutside值为0,但没有任何人进入其中isOutside等于1根据列值不同,在表格中不存在任何其他条目
SELECT DISTINCT(macID)
FROM locations a, logs b
WHERE b.location_id = a.id and b.client_id=1 and Date(b.lastLocatedTime) = '2015-01-16'
and a.isOutside =0 and b.client_id = a.client_id
更新
我写了这个查询哪些为我工作。这与波希米亚的答案类似。
SELECT COUNT(DISTINCT macID)
FROM logs
WHERE location_id IN (SELECT id FROM locations WHERE isOutside = 0) AND client_id = 1 AND
DATE(lastLocatedTime) = '2015-01-16' AND macID NOT IN
(SELECT macID
FROM logs
WHERE DATE(lastLocatedTime) = '2015-01-16' AND
location_id IN (SELECT id FROM locations WHERE isOutside = 1))
然而,我试过这个,即使它没有显示有isOutside值为0的人,但这并不意味着他们在表中没有isOutside值为0。 – 2015-03-31 07:33:28