我正在查看SQL执行的顺序,我发现它是:
FROM,
WHERE,
GROUP BY,
HAVING,
SELECT,
ORDER BY
Run Code Online (Sandbox Code Playgroud)
但是在下面的查询中,GROUP BY中使用了"_index",这怎么可能?
SELECT COUNT(ab.id) AS count, COUNT(ab.id)/365.24 AS average,
IF((SUBSTR(ab.begin, 1, 7) = '2014-08'), '2014-08-18 00:00:00.0 CEST',
IF((SUBSTR(ab.begin, 1, 7) = '2014-09'), '2014-09-18 00:00:00.0 CEST',
IF((SUBSTR(ab.begin, 1, 7) = '2014-10'), '2014-10-18 00:00:00.0 CEST',
IF((SUBSTR(ab.begin, 1, 7) = '2014-11'), '2014-11-18 00:00:00.0 CET',
'0')))) AS _index
FROM active_begin AS ab
INNER JOIN asources AS a ON a.id = ab.asource AND a.unit IN (4, 3, 1)
WHERE (1408226400000 <= ab.begin_time AND ab.begin_time < 1417388400000)
GROUP BY _index
Run Code Online (Sandbox Code Playgroud)
PS.请订购以下内容:http://www.bennadel.com/blog/70-sql-query-order-of-operations.htm 提前致谢.
归档时间: |
|
查看次数: |
870 次 |
最近记录: |