sql查询根据2个ID获取记录

时间:2014-12-04 18:07:56

标签: sql sql-server-2008

我有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

非常感谢任何帮助。

4 个答案:

答案 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