我正在寻找一种通过在联接中排除结果来快速搜索表格的方法。
两个简单的表格:
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。
的如果我使用normale join,然后在term_id!= 20上设置一个位置,如果文章链接到term_id 19,我仍然会得到结果。
答案 0 :(得分:0)
试试这个:
SELECT *
FROM table2
WHERE loc_id = 1
AND atricle_id not in (SELECT article_id
FROM table1
WHERE term_id = 20)
答案 1 :(得分: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
答案 2 :(得分: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
)
以下是 demo ,但数据集不同