编写SQL语法的正确方法?

时间:2013-11-23 11:25:04

标签: sql

这两个SQL语法产生相同的结果,哪一个更好用,为什么?

第一

SELECT c.Id,c.Name,s.Id,s.Name,s.ClassId 
FROM dbo.ClassSet c,dbo.StudentSet s WHERE c.Id=s.ClassId

第二

SELECT c.Id,c.Name,s.Id,s.Name,s.ClassId 
FROM dbo.ClassSet c JOIN dbo.StudentSet s ON c.Id=s.ClassId

4 个答案:

答案 0 :(得分:3)

2:nd更好

您在考虑过时的第一个查询中加入的方式。避免使用,并使用JOIN

“就优先级而言,JOIN的ON子句发生在WHERE子句之前。这允许LEFT JOIN b ON a.id = b.id WHERE b.id IS NULL之类的东西检查b中没有匹配行的情况。“

“使用,符号类似于同时处理WHERE和ON条件”

在此处找到有关它的详细信息,MySQL - SELECT, JOIN

阅读有关SQL标准的更多信息

http://en.wikipedia.org/wiki/SQL-92

答案 1 :(得分:1)

SELECT c.Id,c.Name,s.Id,s.Name,s.ClassId FROM dbo.ClassSet c JOIN dbo.StudentSet s ON c.Id=s.ClassId

毫无疑问,与你的第一个相比,上面的一个更好。在优先表中,“On”坐在第二个,“Where”在第四个

但是对于更简单的查询,你不想像这样打破你的头脑,对于项目级别“JOIN”总是被推荐

答案 2 :(得分:0)

点击此链接Is a JOIN faster than a WHERE?

回答@MehrdadAfshari

  

理论上,不,它不应该更快。查询优化器   应该能够生成相同的执行计划。但是,有些   数据库引擎可以为其中一个生成更好的执行计划(不是   可能会发生这样一个简单的查询,但对于足够复杂的查询)。   您应该测试两者并查看(在您的数据库引擎上)。

答案 3 :(得分:-1)

第二个因为它更具可读性。就是这样。