如何 SELECT 存在于多 table 中?

How to SELECT WHERE EXISTS in multi table?

我有 3 个 tables:

我想 select /test/table1 的数据有 2 个条件。 /test/table2 中的一种情况和 /test/table3 中的另一种情况。

所以我 select 我的数据在一个 table 中有一个条件是这样的:

SELECT doc_id, anotherID FROM /test/table1 AS d 
      INTO CORRESPONDING FIELDS OF TABLE @ct_document
      WHERE EXISTS ( SELECT * FROM /test/table2 AS a 
                     WHERE value1 < @iv_value1 AND a~value1 = d~value1_id ).

select内容如我所料。但现在我想添加一个条件,仅 select 此数据但仅 where /test/table3~value2 = 2.

为此,我这样做:

SELECT doc_id, anotherID FROM /test/table1 AS d 
          INTO CORRESPONDING FIELDS OF TABLE @ct_document
          WHERE EXISTS ( SELECT * FROM /test/table2 AS a 
                         WHERE value1 < @iv_value1 AND a~value1 = d~value1_id ) 
            AND EXISTS ( SELECT * FROM /test/table3 AS e 
                         WHERE e~value2 = 2 ).

当我这样做的时候,我的内容和以前一样...它不需要我的第二个条件。

我不明白什么?

如果 /test/table3 中至少有一行 e~value2 = 2,无论 table [=14= 的内容如何,​​条件 EXISTS ( SELECT * FROM /test/table3 AS e WHERE e~value2 = 2 ) 总是被评估为 TRUE ].

要使其根据 /test/table1(别名 d)计算为 TRUE 或 FALSE,您应该添加条件 AND e~doc_id = d~doc_id,如下所示:

        ...
        AND EXISTS ( SELECT * FROM /test/table3 AS e 
                     WHERE e~value2 = 2 AND e~doc_id = d~doc_id ).