mysql选择查询缺少一行

时间:2013-09-26 10:50:29

标签: mysql sql

我有一个像这样的mysql表

+---------+----------------+-------+------------+
| dept_id | parent_dept_id | level | name       |
+---------+----------------+-------+------------+
|       1 |              0 |     0 | Company    |
|       2 |              1 |     1 | HR         |
|       3 |              1 |     1 | Finance    |
|       4 |              1 |     1 | Operations |
|       5 |              4 |     2 | Sales      |
|       6 |              2 |     2 | Training   |
+---------+----------------+-------+------------+

我正在尝试检索所有部门及其父部门。但我还想要的是检索ID为1的deprtment。这个人是顶级部门,没有父级,我想要的只是部门名称中的null。 到目前为止,我有这个查询

select
    d1.dept_id,
    d2.name as parent_name,
    d1.parent_dept_id,
    d1.level,
    d1.name
from
    tdept d1,
    tdept d2
where
    d1.parent_dept_id = d2.dept_id;

目前,除了最重要的部门之外,所有部门都会被检索,我该如何实现?

3 个答案:

答案 0 :(得分:4)

尝试使用LEFT OUTER JOIN(LEFT JOIN关键字返回左表(table1)中的所有行,右表(table2)中的匹配行。当没有匹配时,结果在右侧为NULL 。)

select
    d1.dept_id,
    d2.name as parent_name,
    d1.parent_dept_id,
    d1.level,
    d1.name
from tdept d1
Left outer join tdept d2
where  d1.parent_dept_id = d2.dept_id;

答案 1 :(得分:0)

好的,我开始工作,我这样做了:

select
    d1.dept_id,
    d2.name as parent_name,
    d1.parent_dept_id,
    d1.level,
    d1.name
from
    tdept d1 left outer join tdept d2 on d1.parent_dept_id = d2.dept_id;

感谢Nadeem_MK让我朝着正确的方向前进

Crouz

答案 2 :(得分:0)

尝试这样的事情:

select
t1.dept_id,
t2.name,
t1.parent_dept_id,
t1.level,
t1.name
from tdept t1
Left outer join tdept t2
ON t1.parent_dept_id = t2.dept_id;