我在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/

10-10 02:23