【发布时间】:2015-04-24 20:10:35
【问题描述】:
我正在尝试在 PostgreSQL 9.4.1 中使用 GROUP BY,但没有取得预期的成功。
the web 上有 several folks 声称这应该有效,但我无法得到相同的结果。我想要的只是一个不区分大小写的GROUP BY,但每次我添加LOWER() 它都会抱怨:
错误:列“people.fn”必须出现在 GROUP BY 子句中,否则 在聚合函数中使用
CREATE DATABASE TEST;
CREATE TABLE people (id INTEGER, fn TEXT, ln TEXT); /* ID, firstname, lastname */
INSERT INTO people (id, fn, ln) VALUES(1,'Mike','f');
INSERT INTO people (id, fn, ln) VALUES(2,'adam','b');
INSERT INTO people (id, fn, ln) VALUES(3,'bill','b');
INSERT INTO people (id, fn, ln) VALUES(4,'Bill','r');
INSERT INTO people (id, fn, ln) VALUES(5,'mike','d');
INSERT INTO people (id, fn, ln) VALUES(6,'mike','c');
INSERT INTO people (id, fn, ln) VALUES(7,'Mike','T');
SELECT fn FROM people GROUP BY LOWER(fn); /* will not run */
SELECT fn FROM people GROUP BY fn; /* runs, but not what I want */
这是我得到的:
adam
mike
Mike
bill
Bill
这就是我想要的:
Mike
adam
bill
显然,我缺少一些东西。不,我不能在将数据放入数据库时对其进行清理。我应该阅读什么来理解这一点?
【问题讨论】:
-
在 SELECT 中也使用 LOWER。
标签: sql postgresql group-by