编写SQL语法的正确方法?


Proper way to write a SQL syntax?

本问题已经有最佳答案,请猛点这里访问。

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

第一:

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

第二:

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


第二个比较好。

您加入第一个查询的方式被认为已过时。避免使用,,使用JOIN

"在优先权方面,join的ON子句发生在WHERE子句之前。这允许像LEFT JOIN b ON a.id = b.id WHERE b.id IS NULL这样的东西检查在b中没有匹配行的情况。"

"使用,表示法类似于处理WHERE,同时在条件下"

在这里找到了它的详细信息,mysql-select,join

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

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


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"总是被推荐的。


检查此链接是否是一个比在哪里更快的连接?

回答:@mehrdadafafshari

Theoretically, no, it shouldn't be any faster. The query optimizer
should be able to generate an identical execution plan. However, some
DB engines can produce better execution plans for one of them (not
likely to happen for such a simple query but for complex enough ones).
You should test both and see (on your DB engine).


第二个是因为它更可读。就这些。