现在有两张表,2018_word_freq
和 t5000
.
两张表有些单词是共有的,我想列出 2018_word_freq
特有的单词。(比如两张表都有 the 这个单词,那么最后查询结果中不会出现这个词)
这是我在 Google Bigquery 上执行的查询语句,但是返回的结果并没有排除重复的项目。
感觉是自己 SQL 没写对,但是网上查了半天,语句改了又改结果还是不正确……
t5000 前面有空格……去掉之后再查询结果就正常了
1
MOONYANYI 2019-01-12 10:08:56 +08:00 1
用 inner 查出两张表相同的,再 not in
|
2
yasumoto 2019-01-12 10:11:39 +08:00 1
select wf.* from 2018_word_freq wf where wf.word not in (SELECT word from t5000 where _______word in (wf.word));
select wf.* from 2018_word_freq wf where wf.word not in (SELECT word from 2018_word_freq twf , t5000 t where twf.word = t._______word ); 跟楼上的思路一样 不知道是否有更有效的查询方法 |
3
lsongiu 2019-01-12 10:17:10 +08:00 1
我咋感觉 lz 本身的 sql 也能查出来才对呢。难道有空格?
|
4
thinkif 2019-01-12 10:17:14 +08:00 1
是我眼花了么?仅从截图里看,2 个表中的词没有看到重复的
|
5
Laynooor OP @thinkif 第一个表 2000 个单词。第二个表 5000 个单词,然后截图里显示的没有按词频排序,所以没看到重复的
|
7
MOONYANYI 2019-01-12 10:21:30 +08:00
还可以用左外连接,再判断右表字段为 null 的
|
8
oaix 2019-01-12 10:22:55 +08:00 1
select a.* from 2018_word_freq a left join t5000 b on a.word = b.______word where b.______word is null
如果你的数据库支持 left anti join 可以使用 select a.* from 2018_word_freq a left anti join t5000 b on a.word = b.______word |
9
thinkif 2019-01-12 10:22:57 +08:00 1
|
11
qinrui 2019-01-12 12:22:00 +08:00 via iPhone
select word from a left outer join b on a.word=b.word where b.word is null
|