1

ANY を使用したクエリで小さな問題が発生しています。

Select *, count(*) as m 
from mp_bigrams_raw 
where date_parsed=051213 
and art_source='f' 
and bigram != ANY(select feed_source from mp_feed_sources) 
group by bigram 
order by m DESC 
limit 50;

クエリは実行されますが、サブクエリで見つかったアイテムは除外されません。

元のクエリは、 に 1 行しかないときに機能しましたsubquery。さらに追加すると、複数の行に関するエラーが発生しました。

Select *, count(*) as m 
from mp_bigrams_raw 
where date_parsed=051213 
and art_source='f' 
and bigram != (select feed_source from mp_feed_sources) 
group by bigram 
order by m DESC 
limit 50;

そこから ANY を追加すると、クエリは実行されますが、!= は無視されるようです。ここで何かが欠けていると思います。

ありがとう

4

3 に答える 3

2

使わない理由NOT IN

Select *, count(*) as m 
from mp_bigrams_raw 
where date_parsed=051213 
and art_source='f' 
and bigram NOT IN(select feed_source from mp_feed_sources) 
group by bigram 
order by m DESC 
limit 50;
于 2013-05-12T12:41:52.620 に答える
0

left joinで aを使用してみてくださいis null:

Select r.*, count(*) as m 
from mp_bigrams_raw r
left join mp_feed_sources f on f.feed_source = r.bigram 
where r.date_parsed=051213 
  and r.art_source='f' 
  and f.feed_source is null
group by r.bigram 
order by m DESC 
limit 50;
于 2013-05-12T12:44:13.213 に答える