我有这张桌子
房态
---------------------------------------------------------------
id| date |count
---------------------------------------------------------------
1 | 15-05-2018 |1
2 | 15-05-2019 |1
3 | 15-05-2020 |1
4 | 15-05-2021 |1
我希望得到所有计数记录,当且仅当它存在于我通过的所有日期时,
例如。
如果我过了几天15-05-2018
和15-05-2019
,我会得到那些数字
如果我过了几天15-05-2018
和14-05-2018
它就不会返回任何内容
我试着写一些类似
的查询select Availabilty.count from Availabilty where Availabilty.date between ? and ?
但是这将返回一条记录,即使它存在一次我需要匹配所有日子。我怎么能实现这个
我希望你能很好地理解我的问题。
答案 0 :(得分:1)
您可以计算匹配记录的数量,并与期间的日期数进行比较。假设没有重复:
select a.count
from Availabilty a
where a.date between ? and ? and
(select count(*)
from Availability a2
where a2.date between ? and ?
) = datediff(?, ?) + 1;
嗯。在您的问题中,您不应该使用between
。我想你想要:
select a.count
from Availabilty a
where a.date in (<list>) and
(select count(*)
from Availability a2
where a2.date a.date in (<list>)
) = <n>;