这些MySQL SELECT查询是否表示不同的内部连接?
问题描述:
可能重复:
which query is better and efficient - mysql这些MySQL SELECT查询是否表示不同的内部连接?
有什么区别,如果有的话,这两个(MySQL的)之间的SELECT查询?
SELECT name, salary
FROM employee, info
WHERE employee.id = info.id;
SELECT e.name AS name, i.salary AS salary
FROM employee AS e
INNER JOIN info AS i
ON e.id = i.id;
两者表示(在同一?)内加入对表employee
和info
。
答
是的两者都代表INNER JOIN
。
SELECT e.name AS name, i.salary AS salary
FROM employee AS e
INNER JOIN info AS i
ON e.id = i.id;
是"explicit join notation"
使用JOIN关键字来指定要连接的表,和ON关键字指定谓词的加入。
SELECT name, salary
FROM employee, info
WHERE employee.id = info.id;
的"implicit join notation"
简单地列出了连接表(在SELECT语句的条款),用逗号将它们分开。因此,它指定了cross join
,并且WHERE子句可能会应用其他过滤谓词(与显式表示法中的连接谓词相当)。
看看这个例子:http://en.wikipedia.org/wiki/Join_%28SQL%29#Inner_join
+1
只需注意:在MySQL中'交叉连接'和'内部连接'是同义词。 – Karolis
您可以找到关于此主题的许多讨论:http://stackoverflow.com/questions/3138742/which-query-is-better-and-efficient-mysql/3138863 –
大!谢谢 – waanders
是重复的,我也发现这个:http://stackoverflow.com/questions/1018822/inner-join-versus-where-clause-any-difference。对不起 – waanders