拥有以下SQL
SELECT
u.user_id AS user_id,
u.user_name AS user_name,
d.user_data AS user_data
FROM
tbl_users u,
tbl_data d
WHERE
d.user_id = u.user_id
这是否仍会产生JOIN(因为此sql中没有JOIN关键字)? MySQL如何处理这个查询?
如果WHERE子句是u.user_id = d.user_id
而不是d.user_id = u.user_id
,那有什么不同吗?
感谢。
答案 0 :(得分:3)
你所写的是1992年ANSI标准化JOIN关键字之前的旧式SQL语法。
使用像上面所写的简单查询,大多数RDBMS将在内部将其转换为与内部联接相同的查找方法。
至于where子句中列的顺序,唯一重要的是你有一个派生列或一个函数。通常,您希望首先保留非派生或非功能列,以便引擎可以找出要使用的正确索引。
答案 1 :(得分:2)
是的,这是用于加入的备用(旧版)语法。
它仍然完全有效。 AND条件的顺序无关紧要。
答案 2 :(得分:1)
您的查询与您执行INNER JOIN
的结果相同。
WHERE
子句的顺序没有区别。
答案 3 :(得分:1)
是的,这隐含地告诉MySQL进行内连接,它相当于:
SELECT
u.user_id AS user_id,
u.user_name AS user_name,
d.user_data AS user_data
FROM
tbl_users u
INNER JOIN
tbl_data d
ON
d.user_id = u.user_id