我想加盟两列,得到错误:
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')
不要混用隐式连接和显式连接..使用适当的内部联接在第一个加盟
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