我有这个表结构
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日的项目!
答案 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);
这将始终从您存储在数据库中的最小可能日期返回元素,这些日期将始终为今天或大于今天。