Mysql 选择其他表中不匹配的行?

Mysql 选择其他表中不匹配的行?,mysql,match,Mysql,Match,我有这个结构 tbl_site_url:存储站点的url tbl_camp_URL:在处理这些URL之后,存储活动的URL tbl\u站点\u URL id - site_id - url 1 - 181 - url1 2 - 182 - url2 3 - 189 - url3 tbl_camp_URL id - camp_id - site_id - url 1 - 5 - 181 - url1 如果我想列出的网址需要处理 select

我有这个结构 tbl_site_url:存储站点的url

tbl_camp_URL:在处理这些URL之后,存储活动的URL tbl\u站点\u URL

id - site_id - url
1  - 181     - url1
2  - 182     - url2
3  - 189     - url3
tbl_camp_URL

id - camp_id - site_id - url
1  - 5       - 181     - url1
如果我想列出的网址需要处理

select url from tbl_site_urls
  join site on tbl_site_urls.site_id = site.id AND site.valid=1
然后在循环操作中,我将处理过的URL插入tbl_camp_URL

id - camp_id - site_id - url
1  - 5       - 181     - url1
我想列出尚未处理的URL。 这就像一个比较操作

我期待的结果是

2  - 182     - url2
3  - 189     - url3
这应该做到:

select  * from tbl_site_urls where url not in (select url from tbl_camp_urls)
(搜索子查询以获取更多信息)

这应该可以做到:

select  * from tbl_site_urls where url not in (select url from tbl_camp_urls)

(搜索子查询以获取更多信息)

我的逻辑告诉我,您需要创建一个交集来了解公共值,并创建一个并集来删除它们:

应该是这样的:

首先获取所有值:

(select site_id from tbl_site_urls) 
union 
(select id from site)
select * from (select site_id from tbl_site_urls 
union 
select id from site) as tem_table
where
site_id not in
(select url from tbl_site_urls inner join site on tbl_site_urls.site_id = site.id) --commons values
这是仅获取公共值的方式

(select url from tbl_site_urls inner join site on tbl_site_urls.site_id = site.id)
现在让我们把这些查询放在一起:

(select site_id from tbl_site_urls) 
union 
(select id from site)
select * from (select site_id from tbl_site_urls 
union 
select id from site) as tem_table
where
site_id not in
(select url from tbl_site_urls inner join site on tbl_site_urls.site_id = site.id) --commons values

我的逻辑告诉我,您需要创建一个交集来了解公共值,并创建一个并集来删除它们:

应该是这样的:

首先获取所有值:

(select site_id from tbl_site_urls) 
union 
(select id from site)
select * from (select site_id from tbl_site_urls 
union 
select id from site) as tem_table
where
site_id not in
(select url from tbl_site_urls inner join site on tbl_site_urls.site_id = site.id) --commons values
这是仅获取公共值的方式

(select url from tbl_site_urls inner join site on tbl_site_urls.site_id = site.id)
现在让我们把这些查询放在一起:

(select site_id from tbl_site_urls) 
union 
(select id from site)
select * from (select site_id from tbl_site_urls 
union 
select id from site) as tem_table
where
site_id not in
(select url from tbl_site_urls inner join site on tbl_site_urls.site_id = site.id) --commons values

这只会给出1个表中的值,这些值在2个表中不会重复,但不会以两种方式重复…试着在
tbl_camp_url
表中输入不同的值,它就我所知不会显示出来,这就是OP想要的?这只会给出1个表中的值,这些值在2个表中不会重复,但不会以两种方式重复…试着在
tbl_camp_url
表中输入不同的值,它就我所知不会显示出来,这就是OP想要的?这是正确的答案,因为它不需要返回第二张表的所有行。太好了……你救了我的命。我的头现在被堵住了,以至于我想不起最后一部分
,其中b.site\u id为空。谢谢+1.这是正确的答案,因为它不需要返回第二张表的所有行。太好了……你救了我的命。我的头现在被堵住了,以至于我想不起最后一部分
,其中b.site\u id为空。谢谢+1.