SQL从两个表中选择

时间:2013-11-04 11:47:07

标签: sql join

有什么区别?

SELECT u.id,u.name,u.email,d.city,d.state 
from users u, userdetails d 
where u.id=d.uid

SELECT u.id,u.name,u.email,d.city,d.state 
from users u join userdetails d on u.id=d.uid

他们是否都有不同的写作风格?哪一个更快?

4 个答案:

答案 0 :(得分:0)

你会想要加入选项,因为它可以提供更多控制,查看不同类型的连接(内部,左边等),你可以准确地找出你的例子所需的内容。

(我怀疑内心会是最好的)

http://www.w3schools.com/sql/sql_join.asp

答案 1 :(得分:0)

此:

SELECT u.id,u.name,u.email,d.city,d.state 
FROM users u, userdetails d 

Cartesian product(所有有序对的集合)。

添加where子句时:

SELECT u.id,u.name,u.email,d.city,d.state 
FROM users u, userdetails d 
WHERE u.id=d.uid

你得到Join(通过使用每个表共有的值组合来自两个表的字段),这相当于:

SELECT u.id,u.name,u.email,d.city,d.state 
FROM users u join userdetails d on u.id=d.uid

答案 2 :(得分:0)

每个数据集中的变量名称可能不同,因此无法使用自然连接。 也可以在同一语句中连接两个以上的表。你甚至可以这样做 转换和条件逻辑。

答案 3 :(得分:0)

这两个选项的作用相同,但第二个是改进的语法(ANSI SQL-92),第一个是最早的语法。每当您使用的数据库系统允许时,最好使用第二个选项的语法。