首页 > 解决方案 > 如何删除左连接查询结果中的重复项

问题描述

看看这些表:

餐桌招聘:

在此处输入图像描述

表技能_招聘:

在此处输入图像描述

我想展示与招聘相关的技能。如您所见,表skill_hirings中有 3 条记录hiring_id = 3。所以当我使用左连接查询时,它会返回 3 条相同的记录。

所以我想删除重复记录,只返回唯一记录id_hiring

我读了一些 StackOverflow QnA,他们建议使用该GROUP BY子句,但我仍然无法弄清楚。

查询:

SELECT id_hiring, company_id, title, status, start_salary, end_salary, 
viewer, open, close, expired 
 FROM (
    SELECT h.id id_hiring, * FROM hirings h 
    LEFT JOIN skill_hirings sh ON sh.hiring_id = h.id 
    LEFT JOIN skills s ON s.id = sh.skill_id 
    WHERE title ILIKE '%'
) RESULT

查询和结果:

在此处输入图像描述

注意:查询中的通配符%将替换为变量

标签: sqlpostgresql

解决方案


在撰写此答案时,对于哪些字段来自哪些表,我们仍然一无所知。根据当前的解释,尚不清楚为什么以下内容不能满足您的需求(尽管它可能根本无法运行,具体取决于任何必填字段是否真正来自skill_hiringsskills table我没有包括在内)。

SELECT
    h.id as id_hiring,
    h.company_id,
    h.title,
    h.status,
    h.start_salary,
    h.end_salary, 
    h.viewer,
    h.open,
    h.close,
    h.expired 
FROM
    hirings h 
WHERE
    h.title ILIKE '%'

推荐阅读