gpt4 book ai didi

postgresql left join 多个条件

转载 作者:行者123 更新时间:2023-11-29 11:58:16 31 4
gpt4 key购买 nike

我仍然是 PostgreSQL 的 NB - 任何人都可以帮助解决这个问题:

select distinct j.id, tt.title, m_scopus.provider_id
from journal j
join temporal_title "tt"
on (j.id = tt.journal_id and tt.list_index = 0)
left join journal_metrics "jm_scopus"
on (jm_scopus.journal_id = j.id)
left join metrics "m_scopus"
on (m_scopus.id = jm_scopus.metrics_id
and m_scopus.source_id = 235451508
and m_scopus.year_integer = 2017)

问题是我在不需要的地方得到了空“provider_id”的行:

journal_id     title                    provider_id
263290036 German Journal of... scopusJournalsMetricsProvider
263290036 German Journal of... NULL
72418282 Europa azul NULL
207412571 IAC International... NULL

第 1、3 和 4 行可以,但第 2 行不行,因为我需要的信息是 provider_id 如果它存在,如果不存在则为 NULL。

最佳答案

如果我正确理解您的数据(模型),journal_metrics 表是一个连接表,最终结果中不需要它,因此可以将其排除在外主查询,避免双重 LEFT JOIN:


SELECT j.id, tt.title, m.provider_id
FROM journal j
JOIN temporal_title tt
ON j.id = tt.journal_id AND tt.list_index = 0
LEFT JOIN metrics m
ON m.source_id = 235451508
AND m_scopus.year_integer = 2017
AND EXISTS ( SELECT *
FROM journal_metrics jm -- The junction table
WHERE jm.journal_id = j.id
AND jm.metrics_id = m.id
)
;

关于postgresql left join 多个条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51059758/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com