鉴于您的初始查询,您应该能够编写:
SELECT UID
FROM Table1
WHERE EXISTS (SELECT 1
FROM Table2
WHERE SubjectB = SubjectA
)
AND another_column_from_table1 > 10;
简单地将条件添加到查询末尾不应该有语法错误。从评论来看,这似乎在语法上被接受,但不产生任何输出。调试它的明显技术是:
SELECT UID, another_column_from_table1
FROM Table1
WHERE EXISTS (SELECT 1
FROM Table2
WHERE SubjectB = SubjectA
)
这将显示列中的值;据推测,由于添加额外过滤条件时结果集为空,因此该选择的第二列中的值都将小于 10(或 null)。
如果 Table1 和 Table2 中的条目之间存在一对一的关系,那么您可以使用 JOIN 代替:
SELECT t1.UID
FROM Table1 AS t1
JOIN Table2 AS t2 ON t2.SubjectB = t1.SubjectA
WHERE t1.another_column_from_table1 > 10;
如果 Table1 中的每一行在 Table2 中可能有几行,那么您需要添加 DISTINCT:
SELECT DISTINCT t1.UID
FROM Table1 AS t1
JOIN Table2 AS t2 ON t2.SubjectB = t1.SubjectA
WHERE t1.another_column_from_table1 > 10;