以空值加入MySQL
我必须在MySQL中进行查询。我必须找到所有的机场,最多4步就可以到达。 这是我的疑问:以空值加入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
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 如果飞行计划的至
机场为空
,这意味着什么?