Postgresql 在SQL查询中使用Group by和select all

Postgresql 在SQL查询中使用Group by和select all,postgresql,Postgresql,我有employee_数据表,表中有以下字段 id-整数(自动递增) 第一个名称-文本 姓氏-文本 我有标题表,有以下字段 id-整数(自动递增) 标题名称-文本 我有员工职位表,表中有以下字段 id-整数(自动递增) title_id-整数(title表的id-fkey) 迄今为止的期间 我想通过连接3个表,根据每个员工获得包含所有3个表数据的maxperiod_to。 但由于显示错误,我无法检索所有数据。 错误:列“jt.code”必须出现在GROUP BY子句中或用于聚合函数中

我有employee_数据表,表中有以下字段

  • id-整数(自动递增)
  • 第一个名称-文本
  • 姓氏-文本
我有标题表,有以下字段

  • id-整数(自动递增)
  • 标题名称-文本
我有员工职位表,表中有以下字段

  • id-整数(自动递增)
  • title_id-整数(title表的id-fkey)
  • 迄今为止的期间
我想通过连接3个表,根据每个员工获得包含所有3个表数据的max
period_to
。 但由于显示错误,我无法检索所有数据。 错误:
列“jt.code”必须出现在GROUP BY子句中或用于聚合函数中

我的sql
我想选择所有数据。请在这方面帮助我。

请尝试下面的内容-在分组中添加ed.first\u name、ed.last\u name

SELECT ed.id,ed.first_name,ed.last_name,title_name, max(et.period_to) FROM employee_data ed 
JOIN employee_title et ON et.employee_id=ed.id 
JOIN title jt ON jt.id=et.title_id
WHERE et.deleted = 0 
GROUP BY ed.id,ed.first_name,ed.last_name,title_name

PostgreSQL扩展名
DISTINCT ON()
通常是最简单、最快捷的方法:

SELECT DISTINCT ON (ed.id) *
FROM employee_data ed 
   JOIN employee_title et ON et.employee_id=ed.id 
   JOIN title jt ON jt.id=et.title_id
WHERE et.deleted = 0
ORDER BY ed.id, et.period_to DESC;

您使用的是哪种dbms?向我们展示一些示例表数据和预期结果。全部为格式化文本,而不是图像。(同时也看一看。)“显示错误”-哪个错误?我想获得
employee\u title
title
表的所有数据。
SELECT DISTINCT ON (ed.id) *
FROM employee_data ed 
   JOIN employee_title et ON et.employee_id=ed.id 
   JOIN title jt ON jt.id=et.title_id
WHERE et.deleted = 0
ORDER BY ed.id, et.period_to DESC;