Postgres SQL查询未标识该列
我的查询有一个很大的问题,出于某种原因,我就是不能得到一个WHERE子句来工作 这是我的SQL:Postgres SQL查询未标识该列,sql,postgresql,group-by,having,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.cr
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
我对这两个表的方案:
你知道我必须做什么才能让这个查询生效吗?非常感谢,如果需要更多信息,请告诉我。您的报价错误:
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的列。也就是说,列名中会有一个句号。太棒了,非常感谢!!!我知道这是一个愚蠢的错误,但当我向我的数据库教授提问时,他都没有发现。你自己的!通常应避免使用带引号的标识符。他们比他们值得的麻烦多。如果你从不使用双引号,你会发现这些列是用双引号创建的,这使得它们区分大小写。createdAt是一个不同的列名,那么createdAt-leofontes必须始终使用双引号
SELECT COUNT(*) FROM diets a JOIN meals b on a.idDiet = b.dietId
WHERE a.kcal <> 0 AND a.createdAt > '2016-10-2'
GROUP BY a.userIdUser HAVING count(*) >= 5;