sql - Postgresql 查询不识别列

标签 sql postgresql group-by having

我的查询有一个大问题,出于某种原因,我无法使其中一个 WHERE 子句起作用。

这是我的 SQL:

SELECT COUNT(*) FROM "diets" JOIN "meals" on "idDiet" = "dietId" 
WHERE kcal != 0 AND "diets.createdAt" > '2016-10-2' 
GROUP BY "userIdUser" HAVING count(*) >= 5;

还有我的错误:

ERROR:  column "diets.createdAt" does not exist

我对两个表的方案:

enter image description here enter image description here

知道我必须做什么才能使这个查询起作用吗?非常感谢,如果需要更多信息,请告诉我。

最佳答案

你的引述是错误的:

SELECT COUNT(*)
FROM "diets" JOIN
     "meals" 
     ON "idDiet" = "dietId" 
WHERE kcal <> 0 AND "diets"."createdAt" > '2016-10-2' 
GROUP BY "userIdUser"
HAVING count(*) >= 5;

双引号围绕一个标识符。一个合格的列引用,如 diets.createdAt 由两个标识符组成,因此每个标识符都需要有引号(如果你有的话)。

否则,您指的是名称为 "diets.createdAt" 的列。也就是说,列名称中会有一个句点。

关于sql - Postgresql 查询不识别列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39950783/

相关文章:

sql - 常用词的 Postgres 全文搜索性能

sql - PostgreSQL:选择行直到单个列的总和减少达到阈值

postgresql - 如何将数字添加到postgresql group by子句中的分组行

python - 如何连接 blob?

mysql - 分组 sql 查询 (mysql) - 排序依据

php - 用 sql 或 php 解决这个问题 - 性能

sql - SQL Server 查询中的 Like 语句不返回所有结果

mysql - 如何使这个 MySQL 查询像 imessage 一样对组/消息进行排序?

sql - 如何修复 postgresql UPSERT 中的语法错误?

mysql - ONLY_FULL_GROUP_BY ON 的 Symfony 查询