我有两个表A
和B
,其中B
包含指向A
的外键。两个表都有一个flag
列。我试图计算A
中符合条件的行数:
B
中有一行标志设置我尝试过使用
SELECT
COUNT(*)
FROM
tableB
INNER JOIN tableA ON tableA.id=tableB.A_id
WHERE
(tableA.flag OR tableB.flag) AND
[condition]
其中[condition]
是无关的条件。但是,这似乎返回了错误的计数。我做错了什么?
表A列:id
(主键),flag
表B列:id
(主键),flag
,A_id
(外键,参考A.id
)
答案 0 :(得分:1)
试试这个:
SELECT
COUNT(*)
FROM tableA A
WHERE (
A.flag = 1
OR EXISTS(
SELECT 'ROW_IN_B'
FROM tableB B
WHERE B.A_id = A.id
AND B.flag = 1
)
)
AND [condition]
计算A中所有行,其中A具有flag = 1(true)或在b中存在一行,其中flag = 1(true)。
OR中的这两个条件与名为[condition]
的第三个条件相关