0
SELECT nmemail as order_email, 
       dtorder, 
       vlOrder, 
       cohorts.cohortdate 
FROM   factorderline 
       JOIN (SELECT nmemail as cohort_email, Min(dtorder) AS cohortDate FROM  factorderline GROUP  BY cohort_email limit 5) cohorts 
ON order_email= cohort_email limit 5; 

错误:列“order_email”不存在

这个查询有什么问题?

4

2 回答 2

1

问题很可能是在评估连接时尚未解析列别名的定义;改用实际的列名:

SELECT nmemail as order_email, 
       dtorder, 
       vlOrder, 
       cohorts.cohortdate 
FROM   factorderline 
JOIN (
  SELECT nmemail as cohort_email, Min(dtorder) AS cohortDate 
  FROM  factorderline 
  GROUP BY cohort_email limit 5
) cohorts ON nmemail = cohort_email 
limit 5; 

此外,在使用 时limit,您确实应该使用order by子句。

从文档:

使用 LIMIT 时,使用 ORDER BY 子句将结果行约束为唯一顺序很重要。否则,您将获得查询行的不可预测的子集。

于 2016-03-26T17:15:32.027 回答
1

问题是输出列名不能用于连接。

文档中

输出列的名称可用于在 ORDER BY 和 GROUP BY 子句中引用列的值,但不能在 WHERE 或 HAVING 子句中引用;在那里你必须写出表达式。

于 2016-03-26T17:16:51.423 回答