1

更新 感谢我最初的问题的所有答案。我现在有另一个与这些查询相关的问题。加入表格后,我想搜索 NULL 结果,按照下面的示例,我想搜索 surname=NULL/surname='',但它返回一个空结果,即使有 2 个未链接的结果。

示例查询:

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

这将返回 0。

有任何想法吗?我可以理解为什么它会返回 0 背后的逻辑,但必须有办法让它工作(?)

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

我遇到的问题是我想加入 2 个具有共同指标的表,但包含共同指标也不存在的记录。

也许我没有意义,但我会尝试在下面的代码中解释

表格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

因此,在有数据的地方合并,在没有数据的地方不要合并(或添加 NULL 值)。table2 的数据总是比 table1 少,所以 table1 可以用作骨骼。vlookup 在 Excel 中完美地做到了这一点,在找不到值的地方返回 N/A 我知道如何使用 PHP 来实现这一点,但我正在尝试加速我的代码,当处理远高于 50k 的记录时,我不想单个查询每一行以获取另一个表列。

我试过 WHERE table1.id=table2.id,但它只在 table2.id 存在的情况下加入它们,我也尝试过 JOIN ON 函数,但它也是一样的。

请帮忙

4

3 回答 3

2

也许使用左连接。

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

请参阅这篇出色的 Jeff Atwood 的帖子

于 2012-07-13T13:42:20.787 回答
0
SELECT * FROM table1 LEFT JOIN ON table2 WHERE table1.id = table2.id;

你试过这个吗?

于 2012-07-13T13:42:29.690 回答
0

哈哈。有时我发现,如果我以其他人能够帮助我的方式来写我的问题,我就会想出来......我一直在寻找解决方案超过 4 小时,但是在写它的时候我开始思考我早期的课程中关于左/右连接的内容......

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

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

SELECT table1.*,table2.* FROM table1 LEFT JOIN table2 ON table1.id=table2.id
于 2012-07-13T13:47:51.147 回答