Mysql选择大于或等于今天的最近项目,但仅限于一个日期

时间:2017-02-22 14:30:45

标签: php mysql

我有这个表结构

 CREATE TABLE `fixtures` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `date` date NOT NULL DEFAULT '2017-03-23',
  `goalsHomeTeam` int(11) NOT NULL DEFAULT '0',
  `goalsAwayTeam` int(11) NOT NULL DEFAULT '0'
 PRIMARY KEY (`id`)
 ) 

我希望获得日期为今天或更高的项目,但每当天匹配时,它只应该带来该日期的项目。因此,如果我在2月23日有4件物品,2月25日有3件物品,两者都比今天更大,我只想要2月23日的物品! 我试过了

            SELECT * 
            FROM fixtures 
            WHERE date >= NOW();

但这会带来23日和25日的项目!

3 个答案:

答案 0 :(得分:2)

SELECT f.* 
FROM fixtures f
INNER JOIN 
(SELECT MIN(date) min_date
 FROM fixtures 
 WHERE date >= NOW()) filter
ON filter.min_date = f.date

答案 1 :(得分:2)

要获得大于今天日期的最近日期,您可以使用以下查询:

select date from fixtures
where date>current_date
order by date limit 1

或者这个:

>

(current_date返回没有时间信息的当前日期,因此您只能使用>=代替select * from fixtures where date=(select min(date) from fixtures where date>current_date) )。然后你的查询将是这样的:

{{1}}

答案 2 :(得分:0)

试试这个:

SELECT * 
FROM fixtures 
WHERE date >= NOW() AND date = (SELECT MIN(date) FROM fixtures);

这将始终从您存储在数据库中的最小可能日期返回元素,这些日期将始终为今天或大于今天。