如何使用 mysql 给定 2 列进行减法运算

How to do the minus operation given 2 columns using mysql

所有对

user1 user2
1     1
2     1
3     1
1     2
2     2
3     2
1     3
2     3
3     3

喜欢对

user1 user2
1     2
2     1
3     1

我想做 allPairs - likedPairs 来获得关系

不喜欢

user1 user2
1     1
2     2
3     2
1     3
2     3
3     3

我试过类似的东西,但它只是错误

select user1, user2 
from allpairs NOT IN likespairs

这听起来像 not exists:

select ap.*
from allpairs ap
where not exists (
    select 1 
    from likespairs lp 
    where lp.user1 = ap.user1 and lp.user2 = ap.user2
)

在这种情况下,LEFT JOIN 可用于检查 NULL 值:

select allpairs.*
from allpairs
left join likespairs 
    on (allpairs.user1 = likespairs.user1 and allpairs.user2 = likespairs.user2)
where likespairs.user1 is null;

Here you can try the SQL code

如果对的顺序不是问题,您可以将下一个添加到 LEFT JOIN 条件中:

select allpairs.*
from allpairs
left join likespairs on (
    (allpairs.user1 = likespairs.user1 and allpairs.user2 = likespairs.user2) or
    (allpairs.user2 = likespairs.user1 and allpairs.user1 = likespairs.user2)
)
where likespairs.user1 is null;

Try SQL here