MySQL/PHP连接表而不总是具有公共列

MySQL/PHP连接表而不总是具有公共列,mysql,join,Mysql,Join,更新 谢谢你对我原来问题的所有回答。 不过,我现在遇到了与这些查询相关的另一个问题。加入表后,我希望搜索空结果,下面的示例中我希望搜索姓氏=NULL/姓氏='',但它返回空结果,即使有两个非链接的结果 查询示例: SELECT table1.*,table2.* FROM table1 LEFT JOIN table2 ON table1.id=table2.id WHERE table2.surname=NULL 这将返回0 有什么想法吗?我可以理解它返回0的逻辑,但一定有办法让它工作(?)

更新 谢谢你对我原来问题的所有回答。 不过,我现在遇到了与这些查询相关的另一个问题。加入表后,我希望搜索空结果,下面的示例中我希望搜索姓氏=NULL/姓氏='',但它返回空结果,即使有两个非链接的结果

查询示例:

SELECT table1.*,table2.* FROM table1 LEFT JOIN table2 ON table1.id=table2.id WHERE table2.surname=NULL
这将返回0

有什么想法吗?我可以理解它返回0的逻辑,但一定有办法让它工作(?)

原始问题: 我找不到任何关于我的问题的答案,可能是因为我不知道我应该寻找什么

我遇到的问题是,我想将两个表与一个公共指示符连接起来,但要包含公共指示符不存在的记录

也许我没什么道理,但我会尝试在下面的代码中解释

表1

id | name
1 | John
2 | Michael
3 | Anna
4 | Sue
表2

id | surname
1 | Doe
2 | Anderson
因此,我想要一个输出/绑定表的查询,如下所示:

table1.id | table1.name | table2.id | table2.surname
1 | John | 1 | Doe
2 | Michael | 2 | Anderson
3 | Anna | NULL | NULL
4 | Sue | NULL | NULL
因此,在有数据的地方合并,在没有数据的地方不合并(或添加空值)。 表2的数据总是比表1少,因此表1可以用作骨骼。 vlookup在Excel中完美地实现了这一点,在未找到值的情况下返回N/A 我知道如何用PHP实现这一点,但我正在尝试加快代码的速度,当处理远高于50k的记录时,我不想为另一个表列查询每一行

我尝试了WHERE table1.id=table2.id,但它只在table2.id存在时连接它们,我也尝试了JOIN ON函数,但它的作用是相同的

请帮助

可能使用左连接

SELECT *
FROM table1
LEFT JOIN table2 ON table1.id = table2.id

你试过这个吗?

哈哈。 有时我发现,如果我以其他人能够帮助我的方式写问题,我会有点想出来。。。。 我已经为这个问题寻找了4个多小时的解决方案,但在写这篇文章的时候,我开始思考我的早期课程中关于左/右连接的内容

嗯。。。对不起,我占用了任何人的时间:)

如果其他人想知道,正确的查询是:

SELECT table1.*,table2.* FROM table1 LEFT JOIN table2 ON table1.id=table2.id

在写问题的时候弄明白了,然后测试:)虽然很棒,但确实有效:)干杯!
SELECT table1.*,table2.* FROM table1 LEFT JOIN table2 ON table1.id=table2.id