有什么区别?
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
他们是否都有不同的写作风格?哪一个更快?
答案 0 :(得分:0)
你会想要加入选项,因为它可以提供更多控制,查看不同类型的连接(内部,左边等),你可以准确地找出你的例子所需的内容。
(我怀疑内心会是最好的)
答案 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),第一个是最早的语法。每当您使用的数据库系统允许时,最好使用第二个选项的语法。