ฉันมีสองตารางและ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
ข้อแตกต่างระหว่างแบบสอบถามสองรายการคือฉันใช้คิวรีย่อยในภายหลังเพื่อ จำกัด แถวก่อนเข้าร่วม ฉันจะแก้ไขข้อผิดพลาดนี้ได้อย่างไร