2017-10-03 25 views
2

複数の列の値を別の列の値と比較したいですが、多分試行しましたが「選択された行がありません」 ここに私のシナリオがあります...複数の値を1つの列で比較する

BUS_ID(FK)------ STOP_ID

201 -------------------:

IはBus_stop_tableテーブルを持っています401

201 ------------------- 402

201 -------------------- 403

202 ------------------- 401

202 ------------------- 405

203 -------------------私は両方とも201 しかし場合である401及び403をstop_idたBUS_IDを選択する必要が403

203 ------------------- 406

私はこれを見つけようとします。電子望ましい結果.. は、ここでは誰も私を助けることができるしてください私のクエリ

SELECT BUS_ID,stop_id FROM BUS_STOP_TABLE WHERE STOP_ID =all(401,405); 

SELECT BUS_ID,stop_id FROM BUS_STOP_TABLE WHERE STOP_ID 401 and STOP_ID = 
405; 

SELECT BUS_ID,stop_id FROM BUS_STOP_TABLE WHERE STOP_ID 401 and STOP_ID = 
405 group by (bus_id , stop_id); 

です。

答えて

4

使用Group byHaving

SELECT Bus_ID 
FROM Bus_stop_table 
WHERE STOP_ID IN (401, 403) 
GROUP BY Bus_ID 
HAVING Count(DISTINCT STOP_ID) = 2 

またはより柔軟なアプローチ

SELECT Bus_ID 
FROM Bus_stop_table 
GROUP BY Bus_ID 
HAVING Sum(CASE STOP_ID WHEN 401 THEN 1 ELSE 0 END) > 0 
     AND Sum(CASE STOP_ID WHEN 403 THEN 1 ELSE 0 END) > 0 
関連する問題