我正在使用下表:
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) );
我正在尝试获取 DISTINCTtrip_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 秒。
解释补充:
进行此查询的最快/最佳方法是什么?