3

我正在使用 mysql 并且有两个具有相同架构的表:

预审

|id|accusedId|articleid|
------------------------
|1 |     1   |     1   |
|2 |     1   |     2   |
|3 |     1   |     3   |
|4 |     2   |     1   |
|5 |     2   |     2   |

审判

|id|accusedId|articleid|
------------------------
|1 |     1   |     1   |
|2 |     1   |     2   |
|3 |     2   |     1   |
|4 |     2   |     2   |

我想得到第一张和第二张桌子accusedIdsarticleIds相等的那些。

上面的例子应该只返回被指控的 ID 2,因为被指控的 ID 1 在第二个表中没有 articleId 3。

我希望你明白我的意思。我目前正在写我的法律论文,而我进入 sql 的时间已经一去不复返了。当然,我已经做了一些研究,并尝试了几次连接,但我无法找到解决方案。希望你能帮助我。

4

1 回答 1

1

尝试这样的事情:

select a.accusedId , sum(a.accusedid) as cnt_a, sum(coalesce(b.accusedId, 0)) as cnt_b
from a left join b on a.accusedId =  b.accusedId and a.articleId = b.articleId
group by accusedId
having cnt_a = cnt_b

我什至没有运行它,所以它可能有点偏离,但给它一个鞭子。它所做的是为 a 中与 b 不匹配的行返回零,因此 HAVING 子句会将您的分组结果过滤到文章计数相等的那些结果。

于 2012-05-18T10:26:50.820 回答