1

我有一张表,其中包含带有巴士站的巴士的路线 ID .. 如下所示..

    route_id                  stop_name
     1234                      stop1
     1234                      stop2
     1235                      stop7
     1235                      stop8

我想要一个包含 stop1 和 stop2 的 route_id(对于 stop1 和 stop2,我想得到 1234)

我写了这个查询..

SELECT DISTINCT(route_id) 
FROM bus_stops 
WHERE stops='stop1' AND stops='stop2'

但它返回了一个空集。

4

2 回答 2

3

尝试这个:

select distint route_id from bus_stops s1 
where exists(select 1 from bus_stops s2 where s1.route_id = s2.route_id and s2.stop_name = 'stop1')
and exists(select 1 from bus_stops s2 where s1.route_id = s2.route_id and s2.stop_name = 'stop2')

它会给你两个站点的路线。

于 2013-06-19T21:40:52.413 回答
2

你可以试试这个,但我不保证这是最好或最优雅的解决方案:

SELECT DISTINCT route_id FROM myTable AS myAlias
WHERE EXISTS ( SELECT * FROM myTable WHERE route_id = myAlias.route_id AND stop_name = 'stop1' )
  AND EXISTS ( SELECT * FROM myTable WHERE route_id = myAlias.route_id AND stop_name = 'stop2' )

实际上,我什至不保证它已经过测试——但是使用类似于那些应该让你到达那里的子查询。

于 2013-06-19T21:40:55.973 回答