这些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; 

两者表示(在同一?)内加入对表employeeinfo

+2

您可以找到关于此主题的许多讨论:http://stackoverflow.com/questions/3138742/which-query-is-better-and-efficient-mysql/3138863 –

+0

大!谢谢 – waanders

+0

是重复的,我也发现这个:http://stackoverflow.com/questions/1018822/inner-join-versus-where-clause-any-difference。对不起 – waanders

是的两者都代表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