根据列条件返回mysql表列

根据列条件返回mysql表列,mysql,row,Mysql,Row,我有一个表,其中包含有公共汽车站的公共汽车的路线id。。 如下图所示 route_id stop_name 1234 stop1 1234 stop2 1235 stop7 1235 stop8 我想要一个包含stop1和stop2的route_i

我有一个表,其中包含有公共汽车站的公共汽车的路线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'
但它返回了一个空集。

请尝试以下操作:

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')
它将为您提供具有两个站点的路线。

尝试以下方法:

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')

它将为您提供具有两个站点的路线。

您可以尝试此方法,但我不能保证这是最好或最优雅的解决方案:

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' )

事实上,我甚至不保证它已经过测试——但使用类似的子查询应该能让你达到目的。

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

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' )

事实上,我甚至不保证它已经过测试-但是使用类似的子查询应该能让你达到目的。

尝试使用或代替AND,但是如果我使用或我认为它不能满足两个条件…切换到或对他也没有帮助-这不能保证他得到一个在两个站点都停止的路由id,只是通过任一站的所有路线。尝试使用或代替AND,但如果我使用或我认为它不能满足两个条件…切换到或对他也没有帮助-这不能保证他获得在两个站都停的路线id,仅通过任一站点的所有路线。投票赞成提前4秒发布完全相同的解决方案:-投票赞成提前4秒发布完全相同的解决方案:-