INNER JOIN使用AND?

时间:2012-10-02 12:37:59

标签: mysql sql join

我正在尝试INNER加入3个表。 1st JOIN(单独)工作正常并返回预期的3行。然后我添加另一个连接来表示匹配第三个表中的名称列。我会期待再次只有3行但是没有。我收到了很多行。

我的问题是,JOIN是否相互建立? 1st INNER JOIN为我们提供了results_1 ...在results_1上的第二次INNER JOIN给出了result_2 ...第三次INNER JOIN在results_2上等等?这是真的吗?

select
students.*
FROM classes
INNER JOIN students ON students.id = classes.id
INNER JOIN books ON books.obj_num_position = students.object_table_obj_num_pos_ref

我发现自己回到使用FROM X Y Z ...和WHERE x.id = z.id AND WHERE AND WHERE .....而不是显式连接,因为它更容易排除故障

1 个答案:

答案 0 :(得分:1)

INNER JOIN将返回与三个表中的匹配项一样多的行。在您的情况下,似乎students.object_table_obj_num_pos_refbooks.obj_num_position之间存在一对多关系,因此会返回与books.obj_num_position匹配的每个students.object_table_obj_num_pos_ref在上一个students.id中使用JOIN返回classes之一。

如果您需要限制其中的一部分,那么仍然可以通过WHERE子句来指定限制条件。

顺便说一下,如果你使用的隐式连接除了WHERE子句中的连接条件之外没有任何条件,你将获得完全相同的结果。