1

我一直在为这个选择苦苦挣扎,我一直在寻找 StackOverflow 并尝试了很多东西,但没有任何东西可以帮助我解决我的特定问题。也许我只是错过了一些明显的东西。

我有两个表:测量,MeasurementFlags

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

是的,因此“测量”表中的记录理论上可以附加无限数量的测量标志,或者它可以没有。

现在,我需要从“Measurements”中选择记录,这些记录具有附加的“MeasurementFlag”值“X”,但它也不能附加值“Y”的标志。

我们谈论的是一个包含数亿行的相当大的数据库,这就是为什么我试图将所有这些逻辑保留在一个查询中。将其拆分会创建太多查询,但是如果无法在一个查询中进行,我想我没有选择。

提前致谢。

4

1 回答 1

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);
于 2012-06-03T16:29:34.043 回答