我希望得到日期最接近当前时间的所有行。 为此,我首先从所有行获得第一个最接近当前日期,然后获取其日期与此最接近的行相同的所有行。 希望有道理..
就是这样:
SELECT *
FROM Events
WHERE StartDate = '(SELECT StartDate
FROM Events
WHERE StartDate >= CURDATE()
ORDER
BY StartDate DESC
LIMIT 1)';
无论如何,查询都不起作用。我知道子查询确实有效:
SELECT * FROM Events WHERE StartDate = SELECT StartDate FROM Events WHERE StartDate >= CURDATE() ORDER BY StartDate DESC LIMIT 1
但是当它们组合在一起时,它将无法运行。 我怀疑这可能是子查询结果的格式问题,我尝试使用sql函数对其进行格式化,但这也不起作用。
我也无法访问调试错误,所以我无法真正看出错误。
你能尝试一下吗? 非常感谢!答案 0 :(得分:2)
您不应该DESC
订购以找到最近的。您需要升序:
SELECT * FROM Events WHERE StartDate = (
SELECT StartDate FROM Events WHERE StartDate >= CURDATE()
ORDER BY StartDate LIMIT 1
)
或者你可以:
SELECT * FROM Events WHERE StartDate = (
SELECT MIN(StartDate) FROM Events WHERE StartDate >= CURDATE()
)
答案 1 :(得分:0)
您的子查询是一个字符串。删除引号。