使用SQL语句实现最短路线问题

发布时间 2023-03-22 21:11:27作者: 冰稀饭Aurora

今天学习了一种直接用sql语句实现查询最短路径的方法,为我们的系统开发提供了便利。

String sql ="WITH RECURSIVE transfer (start_station, stop_station, stops, path) AS (\n" +
                    "    SELECT station_name, next_station, 1, CAST(CONCAT(line_name,station_name , '->', line_name,next_station) AS CHAR(1000))\n" +
                    "    FROM bj_subway WHERE station_name = ?\n" +
                    "    UNION ALL\n" +
                    "    SELECT p.start_station, e.next_station, stops + 1, CONCAT(p.path, '->', e.line_name, e.next_station)\n" +
                    "    FROM transfer p\n" +
                    "             JOIN bj_subway e\n" +
                    "                  ON p.stop_station = e.station_name AND (INSTR(p.path, e.next_station) = 0)\n" +
                    ")\n" +
                    "SELECT * FROM transfer WHERE stop_station = ?;\n";