繁体   English   中英

根据表中没有其他任何条目的列值来区分表

Differentiate a table according to a column value where there cant be any other entries on the table

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我有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))
2 个回复

使用NOT IN测试:

SELECT DISTINCT(macID)
FROM locations a
JOIN logs b ON a.id = b.location_id AND a.client_id = b.client_id
WHERE b.client_id=1 and Date(b.lastLocatedTime) =  '2015-01-16'
AND a.client_id NOT IN (SELECT client_id FROM locations WHERE isOutside = 1)

对局外人使用左联接并过滤联接,只留下局内人:

SELECT DISTINCT l.macID
FROM logs l
JOIN locations a ON l.location_id = a.id
  AND l.client_id = a.client_id
  AND a.isOutside = 0
LEFT JOIN (SELECT macId, l2.client_id, date(lastLocatedTime) lastLocatedDate
           FROM logs l2
           JOIN locations a2 ON l2.location_id = a2.id
           AND l2.client_id = a2.client_id
           AND a2.isOutside = 1) o
  ON o.client_id = l.client_id
  AND o.macID = l.macID
  AND lastLocatedDate = Date(l.lastLocatedTime)
WHERE Date(l.lastLocatedTime) = '2015-01-16'
AND o.client_id IS NULL
AND l.client_id = 1

参见SQLFiddle

在这里,日志是内部连接到位置以查找所有内部人员,然后外部连接到外部人员,如果未找到,将包含where子句选择的所有空值(拒绝成功的连接)。

而且DISTINCT不是函数,因此最好不要将其编码为一个函数。 DISTINCT macID ,不是DISTINCT(macID)

1 设置值列,其中id在另一个表中

我正在尝试修改我的另一个表的表,该另一个表的ID是该另一个表与另一列一起使用,仅当该列的数据为2时才采取该表的ID,并在我想要的那个中使用进行更改,例如: 但是QuestData也有很多数据和表格Quest,我该怎么做? ...

2 根据该表中的其他条目更新表的列

我想根据该表中的其他条目以及到另一个表的联接来更新表的列。 我所拥有的(简体): 基本表 另一个具有数百万个条目的表如下所示: 我想要: 在此示例中,它只影响第10行 我已经尝试了几次JOIN,但是我不知道该怎么做 ...

3 根据同一表中的其他列确定列值

我想根据同一表中的其他列确定每一行的列值。 例如,我有此表: 我每月一次将数据插入这些列( DbName, DBStatus, IsAutoClose, IsAutoCreateStatistics, IsAutoShrink, CheckDate ) 我想根据该行中的其他列 ...

4 使用其他表列中的任何值过滤表

如何在oracle中编写select来过滤一个表中的值以及其他表列中的任何值。 要清楚,我有两个表。 例如汽车和颜色。 在Car表中,我有两列car_model和car_color,在Colors表中,我具有col_code和col_color列。 我需要从颜色表的col_c ...

7 根据其他表中的份额拆分价值

数据库小提琴 预期结果: 在第一个表中,我有costs_per_day_per_country 。 现在,我想根据第二个表中的revenue_share将这些成本revenue_share到每个国家/地区。 此外,分配的成本应平均分配给每个渠道。 我试着用这个查询: 它几乎给了我预 ...

8 Select 表中具有最大列值的单个条目,其中多个条目具有此值

我正在尝试编写一个 MySQL 查询到 select 对于给定的“source_id”和“bands”值组合,表中具有最大“持续时间”值的所有条目,但在这种情况下,这会导致多个条目相等持续时间到 output 只有其中之一。 目前我有一个查询: 作为我想要实现的一个例子,对于表: source_i ...

2021-02-10 17:33:28 0 21   mysql
9 根据其他表中的值和进一步的计算将表中的列和行相交

我是SQL的新手,在尝试了一些教程和此处的其他问题后,我尝试做我需要做的事情,但是我几乎一团糟。 因此,我将非常感激任何这方面的帮助:我有我打成payoffTable和于表 (见下面两个表在这里 )。 inTable将由玩家填充(我仍然不知道如何链接玩家以及他们如何处理数据库。为了使这个问题 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM