我有2个表IlRoutes和PlRoutes,它们都有一个共同的RouteID。
IlRoute: PlRoute:
RouteID CID RouteID PlID Division
1 3 1 2 71
2 3 1 7 29
3 3 2 1 78
4 37 2 7 21
5 37 3 5 50
6 37 3 6 50
我想要plID = 7和CID = 3的记录以及基于RouteID的记录
以下是示例输出:
RouteID CID RouteID PlID Division
1 3 1 2 71
1 3 1 7 29
2 3 2 1 78
2 3 2 7 21
非常感谢任何帮助。
答案 0 :(得分:1)
假设我正确理解您的问题,您希望返回与cid = 3
表中的IlRoute
匹配的任何记录,以及PlRoute表plId = 7
中的至少一条记录。
首先将join
个表放在一起,然后使用exists
查看是否至少有一条plid = 7的记录:
select i.routeid, i.cid, p.plid, p.division
from ilroute i
join plroute p on i.routeid = p.routeid
where i.cid = 3 and
exists (select 1
from PlRoute p2
where p.routeid = p2.routeid
and p2.plid = 7)
答案 1 :(得分:0)
select
IlRoute.*, PlRoute.*
from
IlRoute
join
PlRoute
where
IlRoute.RouteID = PlRoute.RouteID
答案 2 :(得分:0)
select IlRoute.RouteID, IlRoute.CID, PlRoute.RouteID, PlRoute.PlID, PlRoute.Division
from IlRoute,PlRoute
where IlRoute.RouteID=PlRoute.RouteID
and IlRoute.CID=3
答案 3 :(得分:0)
以下符合您的标准,应该是最有效的:
SELECT i.RouteID, i.CID, p.RouteID, p.PlID, pl.Division
FROM IlRoute i
INNER JOIN PlRoute p ON i.RouteID=p.RouteID
CROSS APPLY (SELECT TOP 1 1 FROM PlRoute WHERE RouteID=i.RouteID AND PlID=7) pCriteria
WHERE CID=3