我正在使用下面这个表格:
1 0051ML66220600132482 06:00:00 06:00:00 1538 100 0 1
2 0051ML66220600132482 06:00:00 06:00:00 1540 200 0 0
3 0051ML66220600132482 06:00:00 06:00:00 1541 300 0 0
4 0051ML66220600132482 06:01:00 06:01:00 1542 400 0 0
5 0051ML66220600132482 06:01:00 06:01:00 1543 500 0 0
6 0051ML66220600132482 06:02:00 06:02:00 1544 600 0 0
7 0051ML66220600132482 06:03:00 06:03:00 1546 700 0 0
表结构如下:
> ------------------------------------------------------------------
> -- TABLE stop_times
> ------------------------------------------------------------------
>
> CREATE TABLE stop_times ( id int(12),
> trip_id varchar(100),
> arrival_time varchar(8),
> arrival_time_seconds int(100),
> departure_time varchar(8),
> departure_time_seconds int(100),
> stop_id varchar(100),
> stop_sequence varchar(100),
> pickup_type varchar(2),
> drop_off_type varchar(2) );
我正在尝试获取不同的 trip_id
,它匹配到达和目的地 stop_id
我已经尝试了以下SQL语句,但没有成功:
select DISTINCT trip_id from stop_times where stop_id=1538 AND stop_id =1540;
应该生成的结果是:0051ML66220600132482
我还尝试了以下类似的INNER JOIN SQL:
SELECT
t.trip_id,
start_s.stop_name as departure_stop,
end_s.stop_name as arrival_stop
FROM
trips t
INNER JOIN stop_times start_st ON t.trip_id = start_st.trip_id
INNER JOIN stops start_s ON start_st.stop_id = start_s.stop_id
INNER JOIN stop_times end_st ON t.trip_id = end_st.trip_id
INNER JOIN stops end_s ON end_st.stop_id = end_s.stop_id
WHERE
start_s.stop_id = 1538
AND end_s.stop_id = 1540;
但是它非常慢,简单的查询需要8-15秒。
说明附加:
如何使这个查询更快/更好?