提问人:queenofbel 提问时间:11/17/2023 最后编辑:Shadowqueenofbel 更新时间:11/17/2023 访问量:45
MySQL join 返回 null
MySQL join returns null
问:
我尝试在authors_2的列和author_note的列上联接两个表:authorID
aaID
表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;
答:
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赞
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
评论
aaID
authorID