-1

嘿伙计们,我有两个表 T1 和 T2,T1 有一个称为时间的列,T2 有两个列日期和时间。跟随场景

T1
-------------------
Time
-------------------
10:00
11:00
12:00

T2
-------------------
Date       | Time
-------------------
2013-10-01 | 10:00
2013-10-01 | 11:00
2013-10-01 | 12:00
2013-10-02 | 10:00
2013-10-02 | 11:00

我需要编写一个返回 2013-10-01 的选择,因为该日期的时间与所有T1 字段匹配。这可能吗?

4

1 回答 1

1

只要您在 T1 中有 3 个值,这将起作用

SELECT T2.Date
FROM T2
inner join T1 on T1.Time = T2.Time
GROUP BY T2.Date
HAVING COUNT(DISTINCT T1.Time) = 3

或更“通用”但性能较差:

SELECT T2.Date
FROM T2
INNER JOIN T1 on T1.Time = T2.Time
GROUP BY T2.Date
HAVING COUNT(DISTINCT T1.Time) = (select count(distinct Time) from T1);

SqlFiddle

于 2013-10-14T20:39:08.073 回答