加入mysql5

加入mysql5,sql,mysql,syntax,Sql,Mysql,Syntax,我看到有人在写下面的问题 SELECT column_name(s) FROM table_name1 LEFT JOIN table_name2 ON table_name1.column_name=table_name2.column_name 像这样写的 SELECT column_name(s) FROM table_name1 LEFT JOIN table_name2 ON table_name2.column_name =table_name1.column_name 它真的有

我看到有人在写下面的问题

SELECT column_name(s)
FROM table_name1
LEFT JOIN table_name2
ON table_name1.column_name=table_name2.column_name
像这样写的

SELECT column_name(s)
FROM table_name1
LEFT JOIN table_name2
ON table_name2.column_name =table_name1.column_name

它真的有什么区别吗?

在正常情况下没有。可以想象,可能会有一些足够复杂的查询,比您的示例复杂得多,其中连接优化器会被淹没,这可能会很重要,但如果可能的话,您必须非常努力

顺便说一下,您可以使用(列名称)将这两种代码都写为
。)


我还建议,出于DIY分析此类问题的目的,您应该熟悉。

没有区别

table_name1.column_name=table_name2.column_name

意思相同


联接的“左”部分指的是表,而不是比较——我想这是你的隐含问题?

这可能是个人品味的问题;我恰巧写了第二个例子中的连接,但不能说我在这方面是100%一致的

此外,在查询优化器不如现在聪明的糟糕的旧时代,您可能会发现在联接表达式或
WHERE
子句中对操作数重新排序可能会产生很大的不同;i、 例如,如果操作数是单向排序的,而不是反向排序的,则优化器将使用索引


我想我有一个甲骨文7号弹壳。必须躺下…

使用
在其他RDBMS上是不受支持的,如果您不得不迁移,那么移植可能会带来麻烦。
table_name2.column_name=table_name1.column_name