看看这些桌子:
表租用:

Table skill_hiring:

我想展示与招聘相关的技能。如您所见,表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查询和结果:

注释:查询中的通配符%将替换为变量
发布于 2021-02-15 14:48:21
在写这个答案的时候,我们仍然不知道哪些字段是从哪一张桌子来的。根据当前的解释,不清楚为什么以下内容不能满足您的需要(尽管它可能根本不运行,这取决于所需的字段是否真的来自skill_hirings或skills 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 '%'发布于 2021-02-15 14:52:55
作为一个快速的n脏解决方案,需要执行两次相同的查询,并将它们与UNION放在一起,它删除重复的行。
可能不是最优化的解决方案,但应该有效。
https://stackoverflow.com/questions/66191825
复制相似问题