【问题标题】:"column ambiguously defined" [duplicate]“列定义不明确” [重复]
【发布时间】:2013-03-08 04:27:16
【问题描述】:

所以这个学期我很难理解 SQL。我真的对我在 SQL 方面的知识没有信心,我正在尝试做这个练习,它说:

一个 SELECT 语句,用于检索具有列 DEPARTMENT_ID , DEPARTMENT_NAME , FULL_NAME, JOB_TITLE 的员工列表,其中 FULL_NAME 是名字和姓氏,在他们之间连接一个空格,用于那些他们的职位包含单词“销售”的员工。该列表必须按职位和部门名称排序。

到目前为止,我想出了这个

SELECT department_id, 
    department_name, 
    first_name || ' ' || last_name as Full_name, 
    job_title
FROM departments d, employees e, jobs j
WHERE d.department_id=e.department_id 
HAVING job_title LIKE '%Sales%';

错误提示:

Error starting at line 1 in command:
select department_id, department_name, first_name || ' ' || last_name as Full_name, job_title
from departments d, employees e, jobs j
where d.department_id=e.department_id 
having job_title like '%Sales%'
Error at Command Line:1 Column:8
Error report:
SQL Error: ORA-00918: column ambiguously defined
00918. 00000 -  "column ambiguously defined"
*Cause:    
*Action:

任何提示和帮助都可以。

【问题讨论】:

  • 并将HAVING改为ANDHAVING 类似于 WHERE,但用于聚合表达式,如 SUM()s 和 COUNT()s。

标签: sql oracle11g


【解决方案1】:

命令中的“Column 8”是第八个字符,department_id 字段。您正在从两个都有该列的表中选择列 department_id;这是模棱两可的,因为解析器看到department_id 的两个可能值(一个来自departments,一个来自employees),即使我们根据您的 WHERE 子句知道这些值将是相同的。 em> 你必须选择一个:

select d.department_id, ...

【讨论】:

  • 感谢这真的帮助我理解了所以我所做的就是选择部门.department_id,employees.department_id,departments.department_name,employees.first_name || ' ' || employees.last_name as full_name, job_title 来自部门、员工、jobs where job_title like '%Sales%';现在,问题是它输出了至少 5000 行,我必须遗漏一些东西
  • @user2145903 您取出了“where d.department_id=e.department_id”,所以现在它正在提取所有行。
  • 好的,谢谢,所以我所做的是在employees.department_id=departments.department_id 和job_title 中实现的,例如'%Sales%' order by job_title, full_name asc;它将它缩小到 212 行,但现在的问题是它的 212 是因为它的重复应该少于 212 行。有没有其他我可以申请删除重复的声明?
  • 我也尝试过使用 DISTINCT,但仍然显示 212 行
  • 在上面的 SQL 中,您还没有连接到作业表,因此它可能为每个作业复制条目。
【解决方案2】:

指定所选字段是 e.department_id 还是 d.department_id (etc)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-18
    • 2011-11-07
    • 2014-01-22
    • 1970-01-01
    • 2014-08-13
    相关资源
    最近更新 更多