mysql查询 - 多级位置

时间:2012-05-16 18:55:52

标签: mysql

我有一张包含以下结构和值的表格:

location_id, location_name, parent_id

1,           USA,           0
2,           Illinois,      1
3,           Chicago,       2
4,           New York,      1

在此片段中,带有'USA'的行将被视为国家/地区,因为parent_id的值为0.但是,如果parent_id具有其他值,那么它将表示,特定位置在某个位置。我们有多个级别的位置,但没有设置。它可以是2级,3级,4级等。

对于前。 USA&gt; <阿拉巴马州>阿拉巴马州墨西哥湾沿岸&gt;海湾海岸

我需要获取所有location_id个条目,这些条目没有更多位置。所以在上面的例子中,我应该得到“海湾海岸”的答案。

我认为解决方案应该是这样的:

SELECT location_id FROM location WHERE "( parent_id does not contain any value from location_id )"

但我无法弄清楚确切的语法。我该如何实现呢?

2 个答案:

答案 0 :(得分:2)

如果您使用Closure Tables来实现此功能(根据"SQL Antipatterns"一书中的建议),也许您会更好。

答案 1 :(得分:1)

    select location_id from location l 
    where not exists 
    (select null 
     from location 
     where parent_id = l.location_id);