我在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
。上面的例子应该只返回原告2,因为原告1在第二个表中没有articleid 3。
我希望你明白我的意思。我现在正在写我的法学论文,我进入sql的时代已经过去很久了。当然,我已经做了一些研究,并尝试了几个连接,但我无法找到解决方案。希望你能帮助我。
最佳答案
试试这样的:
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不匹配的行返回0,因此having子句将把分组的结果筛选为项目计数相等的结果。
关于mysql - SQL:比较两个表中的列值是否相等,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10650674/