当我从多个表中选择数据时,我经常使用 JOINS,最近我开始使用另一种方式,但我不确定从长远来看会产生什么影响。
例子:
SELECT * FROM table_1 LEFT JOIN table_2 ON (table_1.column = table_2.column)
这是跨表的基本 LEFT JOIN,但请看一下下面的查询。
SELECT * FROM table_1,table_2 WHERE table_1.column = table_2.column
就个人而言,如果我要连接 7 个数据表,我更愿意这样做而不是连接。
但这两种方法各有优缺点吗?
第二种方法是 INNER JOIN 的快捷方式。
SELECT * FROM table_1 INNER JOIN table_2 ON table_1.column = table_2.column
只会选择两个表中符合条件的记录(LEFT JOIN 将从左侧表中选择所有记录,并从右侧表中选择匹配记录)
引用自http://dev.mysql.com/doc/refman/5.0/en/join.html http://dev.mysql.com/doc/refman/5.0/en/join.html
[...]我们将 table_reference 项列表中的每个逗号视为相当于内部联接
And
在没有连接条件的情况下,INNER JOIN 和 ,(逗号)在语义上是等效的:两者都会在指定的表之间生成笛卡尔积(即,第一个表中的每一行都连接到第二个表中的每一行) )。
但是,逗号运算符的优先级低于 INNER JOIN、CROSS JOIN、LEFT JOIN 等。如果在存在连接条件时将逗号连接与其他连接类型混合使用,则可能会出现“on 子句”中的未知列“col_name”形式的错误。本节稍后将提供有关处理此问题的信息。
一般来说,那里提到了很多事情,这应该让你考虑不使用逗号。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)