查询错误 - 不明确的列名(模型包括)

问题描述 投票:0回答:1

我想加盟两列,得到错误:

Error when executing SQL query on database 'test': ambiguous column name: candidates2.id

这工作:

SELECT * FROM candidates2
WHERE caniddates2.id = '1'

它返回的第一条记录。

然而,这并不:

SELECT * FROM candidates2, jobs
JOIN candidates2
    ON (candidates2.id = jobs.candidate_id)

我收到上述错误。

我究竟做错了什么?

对(在Python与SQLAlchemy的)参考模型:

class Candidate2(Base):
    __tablename__ = 'candidates2'
    id = Column(Integer, primary_key=True)
    candidate_id = Column(String(), unique=True)
    candidate_name = Column(String())
    candidate_email = Column(String())

    jobs = relationship("Jobs", back_populates='candidates')

class Jobs(Base):
    __tablename__ = 'jobs'
    id = Column(Integer, primary_key=True)
    job_name = Column(String())
    job_id = Column(String())

    candidate_id = Column(Integer, ForeignKey('candidates2.id'))
    candidates = relationship("Candidate2", back_populates = 'jobs')
sql
1个回答
3
投票

不要混用隐式连接和显式连接..使用适当的内部联接在第一个加盟

SELECT * 
FROM candidates2
JOIN jobs  ON candidates2.id = jobs.candidate_id

你有不明确的列名,因为你的id列在表都为避免这种情况,你需要的别名。例如:

SELECT candidates2.id as c_id,  jobs.id as j_id
FROM candidates2
JOIN jobs  ON candidates2.id = jobs.candidate_id
© www.soinside.com 2019 - 2024. All rights reserved.