我有两个桌子employee
和phones
。员工可以使用0到n个电话号码。我想列出员工姓名和他们的电话号码。我正在使用下面的查询运行正常。
SELECT empname,array_agg(phonenumber) AS phonenumbers
FROM employee LEFT OUTER JOIN phones ON employee.empid = phones.empid
GROUP BY employee.empid
员工表可能包含大量行。我一次只想获取一些员工。例如,我想获取3名员工的电话号码。我正在尝试运行此查询。
SELECT empname,array_agg(phonenumber) AS phonenumbers
FROM
(SELECT * FROM employee ORDER BY empname LIMIT 3 OFFSET 0) AS employee
LEFT OUTER JOIN phones ON employee.empid = phones.empid
GROUP BY employee.empid
但是我得到这个错误。ERROR: column "employee.empname" must appear in the GROUP BY clause or be used in an aggregate function
两个查询之间的唯一区别是,我在后者中使用子查询来限制联接前的行。我该如何解决这个错误?