MySQL跳过一个孩子级别

时间:2010-09-19 17:46:15

标签: sql mysql

我有一个在父子关系中有位置ID的表。它基本上是一个层次结构,如:

State
  -County
     --City

该表使用以下列映射层次结构

parentID
childID
type

如果我想让某个地点的所有子位置都很简单,那就像:

SELECT childID FROM locations_table WHERE parentID = 1234 AND type = 'county'

但是,如果我需要跳过一个孩子级别(例如跳过县级别并仅包括特定州的城市),我无法弄清楚哪种SQL最适合这样做。

基本上,我试图让孩子的孩子为特定的parentID,但无法弄清楚如何在单个SQL语句中获得它。

2 个答案:

答案 0 :(得分:0)

使用自我加入

SELECT childID
FROM locations_table T1
JOIN locations_table T2 ON T1.parentid = T2.childid
WHERE T2.parentID = 1234 AND T1.type = 'county'

答案 1 :(得分:0)

SELECT city.childID FROM
  locations_table INNER JOIN
  locations_table AS county ON locations_table.childID = county.parentID 
    INNER JOIN
  locations_table AS city ON county.childID = city.parentID
  where city.type='city' and locations_table.parentid=1234