gpt4 book ai didi

MySQL/PHP 连接表而不总是有公共(public)列

转载 作者:行者123 更新时间:2023-11-29 06:58:17 24 4
gpt4 key购买 nike

更新感谢您为我的原始问题提供的所有答案。不过,我现在有另一个与这些查询相关的问题。加入表后,我想搜索 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

所以我想要一个像这样输出/绑定(bind)表的查询:

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 函数,但它做的是一样的。

请帮忙

最佳答案

也许使用 LEFT JOIN。

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

参见 this excellent Jeff Atwood's post .

关于MySQL/PHP 连接表而不总是有公共(public)列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11471641/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com