我有一张这样的table:
userid | clothesid
-------|-----------
1 | 1
1 | 3
2 | 1
2 | 4
2 | 5
我想要的是这样一张table:
userid | clothesid
-------|-----------
1 | 4
1 | 5
2 | 3
我该怎么做?
我试过一个条目:
select distinct r.clothesid from table r where r.clothes not in (select r1.clothes from table r1 where r1.userid=1);
这个返回4,5,但我不确定从这里开始
3条答案
按热度按时间mnemlml81#
你可以
cross join
名单userid
s和clothesid
生成所有组合,然后使用not exists
在原始表上标识缺少的行:cigdeys32#
我想你想要:
实际上,我想我有一个更简单的解决办法:
这是一把小提琴。
dddzy1tm3#
左键连接所有
userid
以及clothesid
返回表并仅返回不匹配的行:或者和接线员一起
EXCEPT
:请看演示。
结果: