提问者:小点点

在mysql中检索具有不同ID的多行


我正在尝试用mysql编写一个查询,其中我的表结构如下所示

place_id    state_id    city_id     place_name  
    1           0           0           United States   
    2           1           0           Alabama     
    3           0           2           Auburn  
    32          0           0           Canada  
    33          32          0           Alberta     
    34          0           33          Calgary 

这里我有美国的id,它是1,使用这个id我想检索美国的所有州和每个州的城市。这里,

  1. 如果state_id和city_id为0,则为国家
  2. 如果city_id为0,则为状态
  3. 如果state_id为0,则为城市
  4. 位置id为auto_increment

请有人帮帮我,谢谢。


共1个答案

匿名用户

对于美国,您可以使用self join将同一个表连接3次。

select t1.place_name, t2.place_name, t3.
from my_table t1 
inner join my_table t2 on  t1.place_id = t2.state_id 
inner join my_table t3 on t3place_id =   t3.city_id
where t1.place_name  ='United States';