1

和有什么区别?

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

4 回答 4

0

您可能希望选择加入选项,因为它为您提供了更多控制权,查看不同类型的加入(内、左等),您可以准确计算出示例所需的内容。

(我怀疑 Inner 会是最好的)

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

于 2013-11-04T11:50:56.117 回答
0

这:

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

笛卡尔积(所有有序对的集合)。

添加 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
于 2013-11-04T11:53:30.703 回答
0

每个数据集中的变量名称可能不同,因此不能使用自然连接。在同一个语句中连接两个以上的表也是很可能的。您甚至可以进行转换和条件逻辑。

于 2013-11-04T11:56:07.947 回答
0

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

于 2013-11-05T11:33:32.407 回答