以空值加入MySQL

以空值加入MySQL,mysql,Mysql,我必须在MySQL中进行查询。我必须找到所有的机场,最多4步就可以到达。 这是我的疑问: SELECT fp0.from AS start, fp1.from AS stop1, fp2.from AS stop2, fp3.from AS stop3, fp4.from AS stop4,fp4.to AS end FROM flightplan AS fp0 LEFT JOIN flightplan AS fp1 ON( fp0.to=fp1.from ) LEFT JOI

我必须在MySQL中进行查询。我必须找到所有的机场,最多4步就可以到达。 这是我的疑问:

SELECT fp0.from AS start, fp1.from AS stop1, 
  fp2.from AS stop2, fp3.from AS stop3, 
  fp4.from AS stop4,fp4.to AS end 
FROM flightplan AS fp0 
LEFT JOIN flightplan AS fp1 ON( fp0.to=fp1.from ) 
LEFT JOIN flightplan AS fp2 ON( fp1.to=fp2.from ) 
LEFT JOIN flightplan AS fp3 ON( fp2.to=fp3.from ) 
LEFT JOIN flightplan AS fp4 ON( fp3.to=fp4.from ) 
WHERE fp0.from=6626
结果是:

6626,"9895","4887","12836","10304","9915"   
6626,"9895","4887","12836","10304","4595"    
6626,"9895","4887","12836","10304","2685"    
6626,"9895","4887","12836","164","12081"    
6626,"9895","4887","12836","1652","8686"    
6626,"9895","4887","12836","1298","6682"    
6626,"9895","4887","12836","5965","10953"    
6626,"9895","4887","12836","5965","7212"    
6626,"9895","13070",**NULL**,NULL,NULL    
6626,"9895","13070","4859","12820","6908"    
6626,"9895",**NULL**,NULL,NULL,NULL
结果有2个点是错误的(我用星星标记了它们)。问题是,我检查“到”机场a1是否等于“从”机场a2。但是如果“to”机场为空,则得到错误的结果

有人能帮我解决我的问题吗? 多谢各位


PS:不允许我递归地执行此操作。

如果要消除带有NULL的行,请在查询末尾添加此项:

并且fp4.to不为空


你能解释为什么空机场是错的吗?你说最多4个。这些航班只有一次或零次到另一个机场的中途停留。谢谢你的评论。我在代码布局中添加了一些错误的解释:
左连接
(所有连接)在一行开头,以便于可读性,像
from
to
这样的保留关键字实际上不能用作列名:当您阅读代码时会感到困惑,有时在执行查询时会遇到这种情况。@patrickswegigl一些示例数据以及预期结果和实际结果将有助于澄清您的问题problem@PatrickSweigl 如果飞行计划的
机场为
,这意味着什么?