【发布时间】:2014-08-14 12:52:42
【问题描述】:
我试图在 Postgres 中执行以下查询:-
INSERT INTO customer_specific_price (id, user_id, model_map_id , start_date ,
price_model_id,precedence )
SELECT coalesce(MAX(csp.id), 0)+1 , cp.user_id, eipm.id , pipt.start_date,
pipt.price_model_id , pi.precedence
FROM customer_specific_price csp, customer_price cp, plan_item pi ,
plan_item_price_timeline pipt , entity_item_price_map eipm
WHERE cp.plan_item_id = pi.id and pipt.plan_item_id = cp.plan_item_id and
pi.plan_id is Null and pi.item_id = eipm.item_id
报错
错误:列“cp.user_id”必须出现在 GROUP BY 子句中或用于聚合函数中。
当表不包含任何 id 列时,它工作正常。但是当我添加 id 并使用 coalesce(MAX(csp.id), 0)+1 时,它给出了上面提到的错误。
【问题讨论】:
-
我们可以把它的格式设置得更好一点吗?当必须左右滚动时,很难阅读所有查询。
-
按照错误消息所说的去做,你还有很多其他未分组和未聚合的列。这是 Postgres,而不是带有 GROUP BY 扩展的 MySQL。也许结果不会像预期的那样,但您应该先完成这个 SELECT 工作,然后再尝试使用它进行 INSERT。
标签: mysql sql postgresql