【发布时间】:2021-02-15 22:52:55
【问题描述】:
看看这些表格:
餐桌招聘:
表技能_招聘:
我想展示与招聘相关的技能。如您所见,表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
查询和结果:
注意:查询中的通配符%将替换为变量
【问题讨论】:
-
你期待什么输出?
-
你的问题完全莫名其妙。
LEFT JOIN正在做它应该做的事情。也许你应该解释一下你想要发生什么。 -
如果您期望特定招聘 ID 的技能,不应该是内部联接吗?同样,我是根据您提供的有关问题的信息说的。
-
我也不确定你想要什么结果。你能显示你想要的结果吗?你似乎没有使用技能表中的任何东西,你需要加入它吗?似乎您不需要子查询,您可以改用column aliases。
-
我想帮忙,但你想要什么还不清楚。您想如何在一行中显示招聘的技能列表?你想要技能名称还是更多?您必须告诉我们您想要什么,以便我们提供帮助。请向我们展示您想要的结果,这将有很大帮助。
标签: sql postgresql