MySQL JOIN查询

时间:2011-06-15 22:00:27

标签: mysql

拥有以下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,那有什么不同吗?

感谢。

4 个答案:

答案 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