选择至少包含要素列表的所有行

时间:2012-12-15 05:15:29

标签: mysql database-design relational-database

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

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

因此,如果runId = 1的运行具有sensorId = 1,sensorId = 6,sensorId = 8的传感器,则RS表中将有3个条目: (runId = 1,sensorId = 1) (runId = 1,sensorId = 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。

1 个答案:

答案 0 :(得分:3)

假设runId, sensorId表中的rs是唯一的,则会找到包含所有3 runId s的sensorId

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