我有一张包含巴士站巴士路线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'
但是它返回了一个空集。
答案 0 :(得分: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')
它将为您提供具有两个停靠点的路线。
答案 1 :(得分: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' )
实际上,我甚至不承诺它已经过测试 - 但使用与那些类似的子查询应该可以帮助你。