我的数据库中有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/