困惑的SQL订单

时间:2017-01-31 17:32:16

标签: sql postgresql

我有一个如下所示的查询:

SELECT
    date(created_at as date) as created_date,
    id,
    count(distinct file_name) as files_total,
    null as files_error
FROM table
GROUP BY created_date, id

我的表格中没有名为created_date的列。

为什么此查询有效?

Created_Date
在查询的选择部分中创建created_at的日期时创建

按此顺序处理SQL:

from, where, group by, having, select, order by

Group By出现在Select之前。

在上面的查询中,别名直到g roup by之后才出现,但由于某种原因,别名在group by中起作用。

为什么会这样?

1 个答案:

答案 0 :(得分:2)

您没有名为created_date的列,但您在此处创建了别名created_date

date(created_at as date) as created_date,

在postgresql中,可以在Group by中引用别名,这就是它工作的原因

Group by可能会在select之后处理逻辑DBMS子句,但在<input type="number">

中并非如此