我正在寻找一个结果查询,我只能看到userid1
数据的提供者未映射到Table 2
;这是我的表定义和数据;
Table 1
userid providerid
1 101
1 104
1 106
1 107
2 102
2 103
2 104
Table 2
providerid
101
102
103
104
105
106
107
108
109
110
根据o / p查询: -
userid providernotavailable
1 102
1 103
1 105
1 108
1 109
1 110
2 101
2 105
2 106
2 107
2 108
2 109
2 110
答案 0 :(得分:0)
您可以使用r20.rb:22: warning: toplevel constant M1 referenced by MyClass::M1
M1::A
13996360
module M1 class A method fun()
r20.rb:27: warning: toplevel constant M2 referenced by MyClass::M2
M2::A
13996120
module M2 class A method fun()
运算符:
not in
答案 1 :(得分:0)
多个版本:拳头NOT IN
SELECT table1.*
FROM table1
WHERE table1.providerId NOT IN ( SELECT table2.providerId FROM table2 )
第二位NOT EXISTS
:
SELECT table1.*
FROM table1
WHERE NOT EXISTS ( SELECT 1
FROM table2
WHERE table1.providerId = table2.providerId )
下一个有点奇怪:我们做LEFT JOIN
我们检查第二个表是否匹配:
SELECT table1.*
FROM table1
LEFT JOIN table2
ON table1.providerId = table2.providerId
WHERE table2.providerId IS NULL
上述三个版本中哪一个表现更好取决于(大部分)两个表的基数。
答案 2 :(得分:0)
对不起,我误解了这个问题。这应该可以解决问题。
查询的第一部分选择所有对userId
- providerId
。第二部分删除table1
中的所有内容。
SELECT U.userId, P.providerId
FROM (SELECT DISTINCT table1.userId FROM table1) U, table2 P
MINUS
SELECT table1.* FROM table1
答案 3 :(得分:0)
修改强>
这是我用来获取输出的表结构
SQL> desc tab1
Name Null? Type
---------------------------- -------- ----------------
USERID NUMBER(38)
PROVIDERID NUMBER(38)
SQL> desc tab2
Name Null? Type
---------------------------- -------- ----------------
PROVIDERID NUMBER(38)
SQL> select distinct(a.userid),b.providerId from tab1 a, tab2 b
minus
select * from tab1 ;
USERID PROVIDERID
---------- ----------
1 102
1 103
1 105
1 108
1 109
1 110
2 101
2 105
2 106
2 107
2 108
2 109
2 110
13 rows selected.
答案 4 :(得分:0)
SELECT a.userid, b.providerid FROM table1 a, table2 b
WHERE a.providerid IS NOT NULL
MINUS
SELECT userid, providerid FROM table1 a
WHERE a.providerid IS NOT NULL;
查询带来所需的输出... 谢谢大家的努力。