Mysql 选择其他表中不匹配的行?
我有这个结构 tbl_site_url:存储站点的url tbl_camp_URL:在处理这些URL之后,存储活动的URL tbl\u站点\u URLMysql 选择其他表中不匹配的行?,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
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.