SQL:比较两个表中的列值是否相等

时间:2012-05-18 10:10:34

标签: mysql join compare equals

我正在研究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   |

我希望得到第一个和第二个表中所有accusedIds相等的articleIds

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

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

1 个答案:

答案 0 :(得分: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

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