Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
试图找出如何编写SQL查询以返回mysql数据库中两个表的不相交,但遇到了问题_Mysql_Sql_Database - Fatal编程技术网

试图找出如何编写SQL查询以返回mysql数据库中两个表的不相交,但遇到了问题

试图找出如何编写SQL查询以返回mysql数据库中两个表的不相交,但遇到了问题,mysql,sql,database,Mysql,Sql,Database,很抱歉,我完全不知道,但我正在尝试为以下涉及mysql数据库的问题编写SQL,我不知所措 问题出在这里。鉴于以下两个表格: **Table1** PID WEBSITE COMP_SITE KEYCODE SITE_TYPE KEYWORDS 14 google.com bing.com w3874yf8 alpha happy+campers 26 radio.com alice.com 98ygdsfg beta

很抱歉,我完全不知道,但我正在尝试为以下涉及mysql数据库的问题编写SQL,我不知所措

问题出在这里。鉴于以下两个表格:

**Table1**
PID WEBSITE     COMP_SITE   KEYCODE     SITE_TYPE   KEYWORDS
14  google.com  bing.com    w3874yf8    alpha       happy+campers
26  radio.com   alice.com   98ygdsfg    beta        slip+slop
13  simon.com   fat.org     98dfyg77    delta       sunrise

**Table2**
PID WEBSITE     KEYWORDS
14  google.com  happy+campers
14  yahoo.com   fat+albert
14  aol.com     chump+change
我需要一个查询来返回表1中的每一行,表2中没有与该行的相同块(ID、网站、关键字)匹配的行。在上面的示例中,此查询将返回表1的第2行和第3行

请注意,两个表中都没有包含该表唯一值的列,尽管行的ID/WEBSITE/KEYWORDS块是唯一的


我觉得我把事情弄得比实际情况复杂得多/

有两种常见的方法来解决这个问题。第一个是
左外连接
。使用此构造匹配所有行,将行保留在第一个表中,然后筛选出匹配的行:

select * from Table1 as t1
left join Table2 as t2 
    on  t1.PID =t2.PID
        and t1.WEBSITE  =t2.WEBSITE     
        and t1.KEYWORDS = t2.KEYWORDS
where t2.PID is null
select t1.*
from table1 t1 left outer join
     table2 t2
     on t1.PID = t2.PID and
        t1.WEBSITE = t2.WEBSITE and
        t1.KEYWORDS = t2.KEYWORDS
where t2.PID is null;
第二种方法是
不存在

select t1.*
from table1 t1
where not exists (select 1
                  from table2 t2
                  where t1.PID = t2.PID and
                        t1.WEBSITE = t2.WEBSITE and
                        t1.KEYWORDS = t2.KEYWORDS
                 );
这两种方法都可以利用
表2上的索引:

create index table2_PID_WEBSITE_KEYWORDS on table2(PID, WEBSITE, KEYWORDS);

哇,添加索引后,查询时间从~2分钟增加到~2秒。再次感谢!