为简单起见,假设所有相关字段都为NOT NULL。
你可以:
SELECT
table1.this, table2.that, table2.somethingelse
FROM
table1, table2
WHERE
table1.foreignkey = table2.primarykey
AND (some other conditions)
否则:
SELECT
table1.this, table2.that, table2.somethingelse
FROM
table1 INNER JOIN table2
ON table1.foreignkey = table2.primarykey
WHERE
(some other conditions)
这两者在MySQL中工作方式相同吗?
其他人指出INNER JOIN有助于人类的可读性,这是首要任务,我同意。
让我试着解释一下为什么联接语法可读性更强。
一个基本的SELECT查询如下:
SELECT stuff
FROM tables
WHERE conditions
SELECT子句告诉我们要返回什么;FROM子句告诉我们从哪里获取,where子句告诉我们从哪里获取。
JOIN是一个关于表以及它们如何绑定在一起的语句(从概念上讲,实际上是绑定到一个表中)。
控制表的任何查询元素——我们从中获取数据的地方——在语义上都属于from子句(当然,JOIN元素也在那里)。将连接元素放入WHERE子句中会合并which和WHERE -from,这就是为什么首选JOIN语法的原因。
其他人指出INNER JOIN有助于人类的可读性,这是首要任务,我同意。
让我试着解释一下为什么联接语法可读性更强。
一个基本的SELECT查询如下:
SELECT stuff
FROM tables
WHERE conditions
SELECT子句告诉我们要返回什么;FROM子句告诉我们从哪里获取,where子句告诉我们从哪里获取。
JOIN是一个关于表以及它们如何绑定在一起的语句(从概念上讲,实际上是绑定到一个表中)。
控制表的任何查询元素——我们从中获取数据的地方——在语义上都属于from子句(当然,JOIN元素也在那里)。将连接元素放入WHERE子句中会合并which和WHERE -from,这就是为什么首选JOIN语法的原因。