0

我正在寻找一种通过在连接中排除结果来快速搜索表的方法。

两个简化表:

table 1
- article_id
- term_id

table 2
- article_id
- loc_id

在表 1 中,同一个 article_id 可以有多行,它可以链接到多个术语。我正在寻找一个选择查询来获取表 2 中的所有结果,其中 loc_id 1 在表 1 中没有带有 term_id 20 的行。

这两个表在 article_ids ofc 上连接。

如果我使用普通连接,然后在 term_id 上设置 where != 20,如果文章链接到 term_id 19,我仍然会得到结果。

4

3 回答 3

0

尝试这个:

SELECT *
FROM table2 
WHERE loc_id = 1
AND   atricle_id not in (SELECT article_id
                         FROM table1 
                         WHERE term_id = 20)
于 2014-11-13T10:51:36.423 回答
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 回答
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 回答