SELECT title,name FROM Lessons,Users WHERE Lessons.author = Users.email;
和
SELECT title,name FROM Lessons JOIN Users ON Lessons.author = Users.email;
和
SELECT title,name FROM Lessons INNER JOIN Users ON Lessons.author = Users.email;
Lessons有一个名为author
的列被索引为Users.email
的外键。 title
是Lessons
中的列,name
是Users
中的列
答案 0 :(得分:12)
这三个陈述之间没有区别,它们都是隐含的或明确的,INNER JOIN
s
第一个语句使用隐式旧连接语法。虽然仍然支持此功能,但使用显式联接更具可读性和可维护性。不要使用旧式连接。
第二个语句使用显式连接而未指定连接类型。默认情况下,这是INNER JOIN
第三个陈述也是显式联接,避免任何歧义。这是迄今为止最常推荐的连接方式。
答案 1 :(得分:1)
不仅有完美的幂等,还有另一种方式。 例如,如果您可以在Lesson.email中重命名Lessons.author,为了确保相关列在两个表中具有相同的名称,您可以使用 NATURAL JOIN 隐式地将行绑定在一起来自共享相同名称的不同表:
-- After renaming Lessons.author in Lessons.email, you simply use NATURAL JOIN
SELECT title,name FROM Lessons NATURAL JOIN Users;