【问题标题】:Select all rows that have at least a list of features选择至少具有特征列表的所有行
【发布时间】:2012-12-15 05:15:28
【问题描述】:

我有 EXPERIMENTAL_RUNS (runId),每个都有任意数量的 SENSORS (sensorId) 与之关联。考虑到这一点,我有一个 RS 表来连接两者:

==========
RS
==========
runId, sensorId

因此,如果 runId=1 的运行中包含 sensorId=1、sensorId=6、sensorId=8 的传感器,则 RS 表中将有 3 个条目: (运行 ID=1,传感器 ID=1) (运行 ID=1,传感器 ID=6) (runId=1, sensorId=8)

这真的是我返回所有具有传感器 {11,13,15} 的 EXPERIMENTAL_RUNS 的方式吗?从我读过的内容来看,我似乎想要的是一个嵌套的哈希连接......这是会发生什么吗?

SELECT a.runId
FROM rs a, rs b, rs c
WHERE
a.runId=b.runId AND
b.runId=c.runId AND
a.sensorId=11 AND
a.sensorId=13 AND
b.sensorId=15

为了澄清,我只想返回具有传感器 11、13 和 15 的 EXPERIMENTAL_RUNS。

【问题讨论】:

  • MySQL 没有哈希连接。但是您发布的查询应该会给您想要的结果。

标签: mysql database-design relational-database


【解决方案1】:

假设runId, sensorIdrs 表中是唯一的,这将找到具有全部3 个sensorIds 的runIds:

SELECT runId, COUNT(c) ct
FROM rs
WHERE sensorId IN (11, 13, 15)
GROUP BY runId
HAVING ct = 3

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-20
    • 2017-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-14
    • 2023-03-13
    相关资源
    最近更新 更多