我有一张包含以下结构和值的表格:
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 )"
但我无法弄清楚确切的语法。我该如何实现呢?
答案 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);