如何从第二个表中选择第一个表中存在所有ID的ID?

时间:2016-09-11 12:29:51

标签: sql-server sql-server-2012

我有以下表格:

TravelPage

TravelPageID     TravelIDRef     PassengerIDRef
    1                1                10
    2                1                15
    3                2                10

温度

PassengerID
   10
   15

我想从travelIDRefs表格中获取所有TravelPagePassegerIDs(10,15)

中存在来自temp table的所有travelPage table

结果应为

travelIDRef=1因为10,15仅适用于TravelIDRef=1

declare @TravelPage table
(
   TravelPageID int,
   TravelIdRef int,
   PassengerIDRef int
)
declare @temp table
(
   PassengerID int
)


insert into @TravelPage
  values(1,1,10),(2,1,15),(3,2,10)

insert into @temp
values(10),(15)

1 个答案:

答案 0 :(得分:1)

使用HAVING子句:

SELECT t.TravelIdRef
FROM TravelPage t
CROSS JOIN Temp p
GROUP BY TravelIdRef
HAVING COUNT(DISTINCT t.PassengerIDRef) = COUNT(DISTINCT p.PassengerID)

或使用子查询而不是连接:

SELECT t.TravelIdRef
FROM TravelPage t
GROUP BY TravelIdRef
HAVING COUNT(DISTINCT t.PassengerIDRef) = 
       (SELECT COUNT(DISTINCT p.PassengerID) FROM Temp p)
相关问题