CREATE TABLE posts (
id bigint NOT NULL,
user_id bigint NOT NULL,
content text
);
CREATE TABLE users (
id bigint NOT NULL,
email character varying DEFAULT ''::character varying NOT NULL
)
CREATE UNIQUE INDEX index_users_on_email ON users USING btree (email);
以下是SQL请求:
SELECT posts.content, users.email /*, other aggregate fields not relevant for the question */
FROM posts
INNER JOIN users ON posts.user_id = users.id
GROUP BY posts.id;
出现了错误 列"users.email"必须出现在GROUP BY子句中或用于聚合函数
。
但是,如果更改了任何内容,电子邮件字段是唯一的,并且帖子只能有一个用户(因此只有一个电子邮件)。
既然不可能在post
中有多个email
值,为什么这个请求是无效的呢?
GROUP BY
时从未选择任何聚合函数。也许您可以在此描述您想要查询执行的操作。 - Tim Biegeleisenusers.id
也是独一无二的,所以我想不出一篇文章怎么会有多个用户。我现在已经看到这个错误好几年了,在不同的请求中都会出现,所以我有点沮丧,不理解它的正确性:D - Mathieu MahéONLY_FULL_GROUP_BY
模式,则查询将无错误地运行(并且具有正确的预期结果集)。 - Tim Biegeleisen