MySQL join 返回 null

MySQL join returns null

提问人:queenofbel 提问时间:11/17/2023 最后编辑:Shadowqueenofbel 更新时间:11/17/2023 访问量:45

问:

我尝试在authors_2的列和author_note的列上联接两个表:authorIDaaID

表authors_2:

 id   |   name   |   aaID   |   authorID

 1    |   jimmy   |  11129  |   1734
 2    |   mike    |  15813  |   2469
 3    |   jane    |  10849  |   9853

表author_note:

 id   |   note   |   aaID   

 1    |   note1   |  1734   
 2    |   note2   |  2469   
 3    |   note3   |  9853   

我已经尝试过,但从表 B 返回的所有内容都是空的。进行此连接的正确方法是什么?select * from A left join author_note on author_note.aaID = authors_2.authorID;

MySQL的

评论

1赞 easleyfixed 11/17/2023
author_note在哪里?你不是把那张表叫做A吗?表A实际上是author_note,表B实际上是authors_2吗?
0赞 Tim Roberts 11/17/2023
在不同的表格中表示两种不同的东西是一个糟糕的设计。表 B 中的列称为 。aaIDauthorID
0赞 easleyfixed 11/17/2023
同意。。这将使数据匹配变得非常乏味。
0赞 easleyfixed 11/17/2023
这可能会对您的格式有所帮助:-->w3schools.com/mysql/mysql_join.asp
0赞 queenofbel 11/17/2023
是的,不幸的是,我正在接手别人开始的工作,所以我无法控制它的创建方式。相应地编辑了问题,实际上没有使用 A 和 B 作为表名。
0赞 philipxy 11/27/2023
请提出 1 个经过研究的非重复问题。请询问 1 个错误的查询/函数,并提供强制性的最小可重现示例,包括为什么您认为它应该返回其他内容,或者不确定在第一个子表达式中您没有得到您期望或卡住的地方,通过参考权威文档进行证明,或者询问您的总体目标,给出您可以用理由和最小可现示例来做的工作部分--那么被误解的代码就不属于了。但是,请首先询问意外行为,因为误解会妨碍您的目标。如何咨询帮助中心 基本问题是常见问题解答。

答:

1赞 Tim Roberts 11/17/2023 #1

您的表名不匹配。如果这些是表 A 和 B 的真实名称,请在示例中使用它们。这应该有效:

SELECT * FROM A LEFT JOIN B ON B.aaID = A.authorID;

评论

0赞 queenofbel 11/17/2023
哎呀,相应地编辑了,实际上并没有使用 A 和 B 作为表名。这就是我尝试过的,它带回了author_note表的所有空值。
0赞 Tim Roberts 11/17/2023
哪些字段的所有空值?也许你应该向我们展示你的确切结果。
-2赞 Andrex Youtube 11/17/2023 #2

您的加入条件似乎有错误。您提到要加入 authors_2 的 authorID 列和 author_note 的 aaID 列。但是,在 SQL 查询中,您尝试在 author_note.aaID = authors_2.authorID 上联接。它应该是相反的。试试这个查询:

SELECT *
FROM authors_2
LEFT JOIN author_note ON authors_2.authorID = author_note.aaID;

评论

3赞 Tim Roberts 11/17/2023
这两个连接条件之间绝对没有区别。运算符是可交换的。=
0赞 Andrex Youtube 11/17/2023
哦,对不起,我对MySQL了解不多
0赞 Tim Roberts 11/17/2023
除非您绝对确定,否则您可能不应该回答专业知识之外的问题。像这样的答案会收集反对票,这会影响您的声誉分数。
0赞 Community 11/18/2023
正如目前所写的那样,你的答案尚不清楚。请编辑以添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。您可以在帮助中心找到有关如何写出好答案的更多信息。
0赞 Hans-Eric Lippke 11/17/2023 #3

该联接的正确语法确实是。

SELECT * FROM authors_2 LEFT JOIN author_note ON authors_2.authorID = author_note.aaID

该示例是否提供了真实的数据片段?您确定 authors_2 表上的 aaID 与author_note aaID 不相关吗?

正如 @Tim Roberts 所提到的,在引用其他表中的键时,使用不同的命名列是一种不好的做法。这使得你很难知道你引用了正确的字段。

正确的连接是这样的

SELECT * FROM authors_2 LEFT JOIN author_note ON authors_2.aaID = author_note.aaID