【问题标题】:SQL - JOIN and SUBQUERYSQL - 联接和子查询
【发布时间】:2022-01-20 15:18:33
【问题描述】:

我正在尝试加入 2 个表(stg.ac_esb 和 stg.ac_eeb),它们都有 emp_codigo,所以我使用此列来设置关系。但是,当我尝试从连接结果中提取数据时,错误提示:错误:列引用“emp_codigo”不明确。谁能帮我解决这个问题!

`SELECT
 **emp_codigo** as NUMEMP /* Código da Empresa SIM*/
 , epg_codigo as TIPCOL /* Tipo do Colaborador SIM*/
 , ' ' as NUMCAD /* Cadastro do Colaborador SIM*/
 , dtinicial as INIETB /* Data de Início da Estabilidade SIM */
 , dtfinal as FIMETB /* Data Final da Estabilidade  NÃO */
 , codigo as CODETB /* Código da Estabilidade SIM */
 FROM 
    (SELECT * 
        FROM stg.ac_esb
        JOIN stg.ac_eeb
        ON ac_esb.emp_codigo = ac_eeb.emp_codigo) AS Estabilidades;`

【问题讨论】:

  • postgres 想知道您的意思是 ac_esb.emp_codigo 还是 ac_eeb.emp_codigo。所以把你需要的唯一列放在子查询中。
  • 这可以作为单个select 语句完成,只需指定要开始的列的特定、完全限定名称。无论如何,选择所有列通常不是一个好主意,并且会降低性能。
  • 子查询有一个*,它产生来自stg.ac_esbstg.ac_eeb的同名列。您需要使用 AS 重命名这些列,或者一次只选择其中一个。
  • 非常感谢!

标签: sql postgresql join


【解决方案1】:

您可以简化查询并将emp_codigo 列限定为您希望该值来自的特定表。例如:

SELECT
 ac_esb.emp_codigo as NUMEMP /* Código da Empresa SIM*/
 , epg_codigo as TIPCOL /* Tipo do Colaborador SIM*/
 , ' ' as NUMCAD /* Cadastro do Colaborador SIM*/
 , dtinicial as INIETB /* Data de Início da Estabilidade SIM */
 , dtfinal as FIMETB /* Data Final da Estabilidade  NÃO */
 , codigo as CODETB /* Código da Estabilidade SIM */
FROM stg.ac_esb
JOIN stg.ac_eeb
ON ac_esb.emp_codigo = ac_eeb.emp_codigo

注意:可能有更多列具有重复名称,因此请确保在每一列前面加上其所属的表名。

【讨论】:

    猜你喜欢
    • 2013-07-29
    • 1970-01-01
    • 2013-07-28
    • 2019-05-20
    • 1970-01-01
    • 2023-03-29
    • 2017-12-09
    • 2020-09-27
    • 1970-01-01
    相关资源
    最近更新 更多