内部联接不起作用

内部联接不起作用

我的数据库中有3个表

第一个表名:savedemail

ID    email
================
1     user.com
2     xy.com
3     user2.com


次表名称:凌空

mac        email
===================
12345     hhhhh.com
22222     user2.com
33333     ggggg.com


第三表名:macadd

 mac
=========
00000
00000
22222


我想做的是将saveemail表的电子邮件的每一行与volley表的电子邮件的每一行进行比较。如果电子邮件匹配,那么我想将volley的mac存储到macadd表的mac(如果尚不存在)。

我下面的代码没有向表插入任何内容,也没有错误\警告

这是我正在使用的查询

SELECT savedemail.email , volley.mac , volley.email
FROM savedemail
INNER JOIN volley
ON savedemail.email=volley.email
WHERE savedemail.email=volley.email REPLACE macadd (mac)
VALUES ('volley.mac')

最佳答案

这是使用outer join / null检查方法的一个选项:

insert into macadd
select v.mac
from savedemail s
    join volley v on s.email = v.email
    left join macadd m on v.mac = m.mac
where m.mac is null



SQL Fiddle Demo




另外,您也可以使用not exists,但是根据我对mysql查询的经验,outer join / null检查通常会胜过它。

insert into macadd
select v.mac
from savedemail s
    join volley v on s.email = v.email
where not exists (
    select 1
    from macadd
    where mac = v.mac
)



More Fiddle

关于php - PHP-SQL-内部联接不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35640890/

10-12 04:53