基于MySQL中子表数据的行选择

时间:2012-06-03 16:23:36

标签: mysql

我一直在努力选择这个选择,我一直在寻找StackOverflow并尝试了一些东西,但没有什么可以帮助我解决我的特定问题。也许我只是错过了一些明显的东西。

我有两个表:Measurements,MeasurementFlags

“测量”包含来自设备的测量值,并且每个测量值都可以附加属性/属性(通常称为“标记”),以表示所讨论的测量值在某种程度上是特殊的(例如,一个标志可以表示测试或校准测量)。注意:每个国旗一个记录!

是的,所以“测量”表中的记录理论上可以附加无限量的MeasurementFlags,或者它没有。

现在,我需要从“测量”中选择记录,其中附加的“MeasurementFlag”值为“X”,但它也必须没有附加值为“Y”的标记。

我们正在谈论一个拥有数亿行的相当大的数据库,这就是我试图将所有这些逻辑保留在一个查询中的原因。将它拆分会产生太多查询,但如果在一个查询中无法做到,我想我没有选择。

提前致谢。

1 个答案:

答案 0 :(得分:1)

SELECT measurements.*
FROM   measurements
INNER JOIN measurement_flag
        ON measurements.measurement_id = measurement_flag.measurement_id
       AND flag = 'X'
       AND 'Y' NOT IN (
               SELECT flag
               FROM   measurement_flag
               WHERE  measurement_id = measurements.measurement_id);