如何使用 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;
如果对的顺序不是问题,您可以将下一个添加到 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;
所有对
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;
如果对的顺序不是问题,您可以将下一个添加到 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;