postgres: LEFT JOIN table 并且字段不存在
postgres: LEFT JOIN table and field does not exist
这是我的查询
SELECT org.id,
org.name,
org.type,
org.company_logo,
(SELECT org_profile.logo_url FROM org_profile WHERE org_profile.org_id = org.id AND org_profile.status = 'active' ORDER BY org_profile.id DESC LIMIT 1) as logo_url,
org.short_description,
org_profile.value_prop,
count(*) OVER () AS total
FROM org
LEFT JOIN user_info ON user_info.id = org.approved_by
INNER JOIN (select distinct org_profile.org_id from org_profile) org_profile ON org_profile.org_id = org.id
WHERE
org.type = 'Fintech'
AND org.status = 'APPROVED'
AND org.draft != TRUE
ORDER BY org.id DESC
我在 org_profile
table 中使用 LEFT JOIN
查询。我使用 distinct
作为唯一组织 ID,但问题是 org_profile.value_prop
列不起作用。错误显示 column org_profile.value_prop does not exist
我正在尝试解决这个问题。但是我没有搞清楚这个问题。
基本上,错误提示您尝试从 org_profile
子查询中获取 value_prop
字段,该字段基本上不存在。
只写在纸上很难给出有效的查询,但我认为:
- 值得为每个子查询应用方便的
aliasses
- 重复数据删除,如果需要,应该在子查询中完成。当使用 DISTINCT 的多个字段可能不足时 - 可能需要 RANK 函数。
- 你做了一些操作来通过标量子查询获取
logo_url
- 这看起来有点奇怪,尤其是在 JOIN 中使用了相同的 table - 我建议移动所有相关的逻辑org_profile
到子查询。如果在输出中发现多个值,标量表达式将引发错误。
SELECT
org.id,
org.name,
org.type,
org.company_logo,
prof.logo_url,
org.short_description,
prof.value_prop,
count(*) OVER () AS total
FROM org
JOIN (
select distinct org_id, logo_url, value_prop -- other deduplication type (RANK) may be required
from org_profile
where status = 'active' -- ?
) prof ON org.id = prof.org_id
LEFT JOIN user_info usr ON usr.id = org.approved_by
WHERE
org.type = 'Fintech'
AND org.status = 'APPROVED'
AND org.draft != TRUE
ORDER BY org.id DESC
这是我的查询
SELECT org.id,
org.name,
org.type,
org.company_logo,
(SELECT org_profile.logo_url FROM org_profile WHERE org_profile.org_id = org.id AND org_profile.status = 'active' ORDER BY org_profile.id DESC LIMIT 1) as logo_url,
org.short_description,
org_profile.value_prop,
count(*) OVER () AS total
FROM org
LEFT JOIN user_info ON user_info.id = org.approved_by
INNER JOIN (select distinct org_profile.org_id from org_profile) org_profile ON org_profile.org_id = org.id
WHERE
org.type = 'Fintech'
AND org.status = 'APPROVED'
AND org.draft != TRUE
ORDER BY org.id DESC
我在 org_profile
table 中使用 LEFT JOIN
查询。我使用 distinct
作为唯一组织 ID,但问题是 org_profile.value_prop
列不起作用。错误显示 column org_profile.value_prop does not exist
我正在尝试解决这个问题。但是我没有搞清楚这个问题。
基本上,错误提示您尝试从 org_profile
子查询中获取 value_prop
字段,该字段基本上不存在。
只写在纸上很难给出有效的查询,但我认为:
- 值得为每个子查询应用方便的
aliasses
- 重复数据删除,如果需要,应该在子查询中完成。当使用 DISTINCT 的多个字段可能不足时 - 可能需要 RANK 函数。
- 你做了一些操作来通过标量子查询获取
logo_url
- 这看起来有点奇怪,尤其是在 JOIN 中使用了相同的 table - 我建议移动所有相关的逻辑org_profile
到子查询。如果在输出中发现多个值,标量表达式将引发错误。
SELECT
org.id,
org.name,
org.type,
org.company_logo,
prof.logo_url,
org.short_description,
prof.value_prop,
count(*) OVER () AS total
FROM org
JOIN (
select distinct org_id, logo_url, value_prop -- other deduplication type (RANK) may be required
from org_profile
where status = 'active' -- ?
) prof ON org.id = prof.org_id
LEFT JOIN user_info usr ON usr.id = org.approved_by
WHERE
org.type = 'Fintech'
AND org.status = 'APPROVED'
AND org.draft != TRUE
ORDER BY org.id DESC