0

結合で結果を除外して、テーブルをすばやく検索する方法を探しています。

単純化された 2 つの表:

table 1
- article_id
- term_id

table 2
- article_id
- loc_id

テーブル 1 では、同じ article_id に対して複数の行が存在する可能性があり、複数の用語にリンクされている可能性があります。term_id 20 のテーブル 1 に行がない loc_id 1 のテーブル 2 からすべての結果を取得するための選択クエリを探しています。

2 つのテーブルは、article_ids ofc で結合されます。

通常の結合を使用して、term_id != 20 に where を設定すると、記事が term_id 19 にリンクされている場合でも結果が得られます。

4

3 に答える 3

0

not exists何かを次のように使用できます

select * from table2 t2
where loc_id = 1
and not exists
(
  select 1 from table1 t1
  where 
  t1.term_id = 20
  and t1.article_id = t2.article_id

)

これはデモですが、データセットが異なります

于 2014-11-13T11:11:18.873 に答える
0

以下のようにしてみてください

select * from table1 as t1  join  table2 as t2
on t1.article_id=t2.article_id
where t2.loc_id = 1 and t1.term_id <> 20
于 2014-11-13T10:52:55.713 に答える