select中的新列不会在having子句中屏蔽同名列,sqlite不会发出警告
我在sqlite中得到了这个查询select中的新列不会在having子句中屏蔽同名列,sqlite不会发出警告,sql,sqlite,Sql,Sqlite,我在sqlite中得到了这个查询 select kvadrat, datum, count(distinct kontrola) as pocet from b group by kvadrat, datum having pocet > 1 问题是pocet实际上是表b中的一列,我没有注意到,having子句使用的是表列,而不是select子句中指定的新派生列 到目前为止还不错,但sqlite至少应该发出任何警告,对吗 编辑:我已将此作为一个bug报告 PS:我在R版本0.4-7.1中
select kvadrat, datum, count(distinct kontrola) as pocet
from b
group by kvadrat, datum
having pocet > 1
问题是pocet实际上是表b中的一列,我没有注意到,having子句使用的是表列,而不是select子句中指定的新派生列
到目前为止还不错,但sqlite至少应该发出任何警告,对吗
编辑:我已将此作为一个bug报告
PS:我在R版本0.4-7.1中使用sqlite和sqldf包。包RSQLite 0.11.4。根据描述,SQLite引擎应该是3.7.17版。您有问题吗?使用countdistinct kontrola>1来解决此问题。@NoDisplayName。您的评论是针对SQLite的。有些数据库确实允许在having子句中使用别名。我理解,但我不理解您希望它警告什么,是因为您将派生列重命名为可能在select子句中引用的列的名称吗?我知道,但重命名为。。。是在完成后完成的,所以变量pocet在当时甚至不存在。不,这是不正确的。求值顺序为FROM、JOIN、WHERE、GROUP、HAVING和SELECT rename。HAVING将接受谓词中的COUNT1等聚合,因为它是在分组后计算的,而WHERE不会。