代码之家  ›  专栏  ›  技术社区  ›  Mohamad

MySQL中同一个表联接的语法错误

  •  0
  • Mohamad  · 技术社区  · 14 年前

    我想在同一个查询中得到一个经理和为该经理工作的员工列表,例如:

    record 1: manager.name, manager.title
    record 2: employee.name, employee.title
    record 3: employee.name, employee.title
    record 4: employee.name, employee.title
    

    这些信息都存储在同一个表中。我尝试了以下查询,但它给出了一个语法错误“1064”:

    SELECT employees.id, employees.name, employees.title, employees.managerId, managers.id, managers.title, managers.name
    FROM employees
    FULL OUTER JOIN employees AS managers ON employees.id = managers.managerId
    WHERE employees.id = '1'
    

    现在我知道如果我用 left join 但这似乎没有效率。每个员工行都会列出经理的姓名。我希望它是空的。我已经知道经理的名字了,因为这是我要的第一张唱片。

    你知道我错在哪里吗?

    2 回复  |  直到 14 年前
        1
  •  2
  •   Thilo    14 年前

    使用联合:

    SELECT id, name, title FROM employees WHERE id = 1
    UNION
    SELECT id, name, title FROM employees WHERE managerId = 1
    

    第一排是你的经理,其他的是他的雇员。

        2
  •  2
  •   David    14 年前

    为什么不

    SELECT employees.id, employees.name, employees.title
    WHERE employees.id = [manager ID]
    OR employees.managerId = [manager ID]
    

    ?

    这应该会产生你所说的预期结果。