PHP-加入多个表不能按预期工作

时间:2016-02-18 13:08:04

标签: php mysql sql database

我的数据库中有两个表。

我想将Email的{​​{1}}的 每行 每行进行比较<{1}} table-1的{​​{1}}如果其内容匹配,则我希望将Email2 table-2存储到Mac table-2

这是table-1

Mac

这是表-2

Result table

这是结果表

Name       Email

name1      user1@xy.com
name2      user2@xy.com

目前我正在使用此代码来比较和插入result_table中的数据。它未按预期运行。 它甚至没有比较Email1和Email2,它只是在表格中多次转储值(Mac),就像在运行脚本上一次只转发28次一样。

Email2           Mac

user1@xy.com     77777
abc@xy.com       88888

我很清楚之前会问过类似的问题,但是没有一个像我的问题或完整的答案那就是我问的原因

6 个答案:

答案 0 :(得分:4)

您在加入条件中输入了拼写错误:

... table1.email = table 2 .email 2

上的内连接table1

答案 1 :(得分:3)

您的代码中存在错误。您在查询的table1子句中使用ON两次:

insert into result_table (mac)
select table2.mac from table2
inner join table1 on table1.email = table2.email

Demo here

答案 2 :(得分:0)

你的内部联接似乎没用,因为你加入了table1.email=table1.email.

您需要加入table2.email

答案 3 :(得分:0)

您的部分问题是您的联接看起来在同一个字段上。尝试更改您的联接table1.email = table2.email

答案 4 :(得分:0)

您的内部联接是错误的,如果您的列被调用的是正确的,那么您应该具有以下内容:

table1.email = table2.email2

答案 5 :(得分:0)

这将做你想要的事情

insert into results (mac)
    select t2.mac
    from table1 t1
    join table2 t2
        on t1.email = t2.email;

它的SQL小提琴: http://sqlfiddle.com/#!9/5d311/1