【问题标题】:Column 'id_training' in on clause is ambiguous [duplicate]on 子句中的“id_training”列不明确[重复]
【发布时间】:2018-12-17 03:59:53
【问题描述】:

我想显示 course_title 数据但我得到:

on 子句中的“id_training”不明确。

查询的错误在哪里?

CREATE TABLE `examination` (
`id_exam` int(32) NOT NULL,  
`class_name` varchar(100) NOT NULL,
`id_training` int(32) NOT NULL, 
`id_question` int(32) NOT NULL,
`total` int(3) NOT NULL,  
`exam_duration` int(5) NOT NULL,
`start` datetime NOT NULL,
`end` datetime NOT NULL,
`passing_grade` int(3) NOT NULL,
`id_user` int(32) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

CREATE TABLE `training` (
`id_training` int(32) NOT NULL,  
`course_code` varchar(25) NOT NULL,
`course_title` varchar(100) NOT NULL,
`training_time` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

查询:

SELECT e.id_exam
     , e.class_name
     , e.id_training
     , e.total
     , e.exam_duration
     , e.start_exam
     , e.end_exam
     , e.passing_grade
     , t.course_title 
FROM examination e
INNER JOIN training t
ON id_training = course_tilte

【问题讨论】:

  • 限定您的列,例如examination.training.
  • 试试这个->inner join training on Exam.id_training = "course_title"

标签: mysql sql


【解决方案1】:

此错误的原因“on 子句中的列 'id_training' 不明确” 相同的列在两个表中都存在相同的列,因此在指定 where 子句 sql 中的 id_training 列混淆了我应该从哪个表中获取,因此始终使用别名指定。

SELECT e.id_exam
     , e.class_name
     , e.id_training
     , e.total
     , e.exam_duration
     , e.start_exam
     , e.end_exam
     , e.passing_grade
     , t.course_title 
  FROM examination e
  JOIN training t
    ON e.id_training = t.id_training

【讨论】:

    【解决方案2】:
    SELECT e.id_exam, e.class_name, e.id_training, 
    e.total, e.exam_duration, e.start_exam, 
    e.end_exam, e.passing_grade, t.course_title 
    FROM examination e
    INNER JOIN training t  
    ON e.id_training = t.course_title
    

    【讨论】:

      【解决方案3】:

      您的查询看起来不正确。应该是这样的:

      SELECT examination.id_exam, examination.class_name, examination.id_training, examination.total, examination.exam_duration, examination.start_exam, examination.end_exam, examination.passing_grade, training.course_title 
      FROM examination 
      INNER JOIN training 
      ON training.id_training = examination.id_training
      

      【讨论】:

        【解决方案4】:

        请试一试:

        ON t.id_training = e.id_training
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-06-09
          • 2012-05-16
          • 2011-06-11
          • 2019-10-09
          • 2014-05-03
          • 1970-01-01
          相关资源
          最近更新 更多