如何匹配一个列中的所有行

时间:2018-05-03 16:05:01

标签: mysql sql

我有这张桌子

房态

---------------------------------------------------------------
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-201815-05-2019,我会得到那些数字 如果我过了几天15-05-201814-05-2018它就不会返回任何内容

我试着写一些类似

的查询
select Availabilty.count from Availabilty where Availabilty.date between ? and ? 

但是这将返回一条记录,即使它存在一次我需要匹配所有日子。我怎么能实现这个

我希望你能很好地理解我的问题。

1 个答案:

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