Joe*_*Joe 4 .net c# sql linq-to-sql
为什么linq to sql查询以FROM与常规SQL查询不同的关键字开头?
LINQ模仿Logical Query processingSQL你有:
8. SELECT
9. DISTINCT
11. TOP
1. FROM
2. ON
3. JOIN
4. WHERE
5. GROUP BY
6. WITH CUBE/ROLLUP
7. HAVING
10. ORDER BY
12. OFFSET/FETCH
Run Code Online (Sandbox Code Playgroud)
但实际上它执行如下:
1. FROM
2. ON
3. JOIN
4. WHERE
5. GROUP BY
6. WITH CUBE/ROLLUP
7. HAVING
8. SELECT
9. DISTINCT
10. ORDER BY
11. TOP
12. OFFSET/FETCH
Run Code Online (Sandbox Code Playgroud)
很多人都没有意识到这一点,并犯了一些简单的错误:
SELECT col AS alias_name
FROM tab
WHERE aliass_name > 10;
Run Code Online (Sandbox Code Playgroud)
并问为什么它不起作用.因为他们认为订单就像他们写的那样.LINQ在这件事上更好.
SELECT语句的逻辑处理顺序
以下步骤显示SELECT语句的逻辑处理顺序或绑定顺序.此顺序确定在一个步骤中定义的对象何时可用于后续步骤中的子句.例如,如果查询处理器可以绑定(访问)FROM子句中定义的表或视图,则这些对象及其列可供所有后续步骤使用.相反,因为SELECT子句是步骤8,所以前面的子句不能引用该子句中定义的任何列别名或派生列.但是,它们可以由后续子句引用,例如ORDER BY子句.请注意,语句的实际物理执行由查询处理器确定,并且顺序可能与此列表不同.
Run Code Online (Sandbox Code Playgroud)FROM ON JOIN WHERE GROUP BY WITH CUBE or WITH ROLLUP HAVING SELECT DISTINCT ORDER BY TOP
| 归档时间: |
|
| 查看次数: |
648 次 |
| 最近记录: |