1
fasling 2015-01-11 15:04:32 +08:00 1
看这个 10个简单步骤,完全理解SQL http://blog.jobbole.com/55086/
|
2
sniper1211 2015-01-11 15:45:23 +08:00 1
1. FROM clause
2. WHERE clause 3. GROUP BY clause 4. HAVING clause 5. SELECT clause 6. ORDER BY clause |
3
leiliang OP @fasling @sniper1211 确定这是权威的顺序吗?
|
4
msg7086 2015-01-11 20:15:53 +08:00 2
@leiliang 每一步都会依赖上一步的结果。
我不知道你指的权威是什么意思,但是我觉得这算是比较常识的东西。 比如第一个FROM,是指定从哪个数据表取数据。 FROM不在第一个执行,那你去哪取数据来处理? 比如GROUP BY聚合,首先你要选出数据才能聚合吧,所以必然在WHERE之后。 比如HAVING聚合筛选,首先你先要聚合吧。 至于剩下的有一些,则是放在前后都可以的。 比如ORDER BY语句就可能会在SELECT之前执行。 SQL标准里可能会写必须按照哪个步骤来执行。 但是实际上每个数据库在实现的时候都会或多或少夹带些私货的。 如1楼链接里所提到的。 「注意:并非所有的数据库对 SQL 语句使用相同的解析方式。如 MySQL、PostgreSQL和 SQLite 中就不会按照上面第二点中所说的方式执行。」 |
5
omegaga 2015-01-12 00:52:36 +08:00 via Android 1
@sniper1211 逻辑上是这样的,不过事实上并不严格,比如where可能会跟from放到一起,像在SQL server里,SELECT * FROM A JOIN B ON A.id = B.id跟SELECT * FROM A, B WHERE A.id = B.id就是等价的
|
6
sniper1211 2015-01-12 09:51:48 +08:00 1
|