php - 查询上一个和下一个匹配项

标签 php mysql phpmyadmin

我有一个带有表“CALENDAR”的 phpmyadmin 数据库,其中包含团队之间所有比赛的列表。

这是结构: ID、TEAM_HOME、TEAM_AWAY、DATE、RESULT_HOME、RESULT_AWAY

我需要创建一个仅返回 2 条记录的 mysql 查询:上一场比赛(因此字段 RESULT_HOME 和 RESULT_AVAY 为 <> '0');下一场比赛(即将进行的比赛)。

拜托,你能帮我查询一下吗? 我试过这个,但它不适合我:

SELECT C.*
FROM CALENDAR AS C
WHERE C.DATA BETWEEN DATE_SUB(CURRENT_DATE,  INTERVAL '7' DAY) AND CURRENT_DATE
ORDER BY YEAR(C.DATA) ASC, MONTH(C.DATA) ASC, DAY(C.DATA) ASC
LIMIT 2

如果您需要更多详细信息,请告诉我

最佳答案

要获得具有非零结果的最新(日期)游戏,您可以限制那些非零结果,按日期排序并获取具有最大日期的单行,即第一行,如果您订购降序:

SELECT … FROM CALENDAR AS C
WHERE … AND (RESULT_HOME <> 0 AND RESULT_AVAY <> 0)
ORDER BY C.DATA DESC
LIMIT 1

同样对于相反的情况:结果为零的最小日期将是这样的:

SELECT … FROM CALENDAR AS C
WHERE … AND (RESULT_HOME = 0 OR RESULT_AVAY = 0)
ORDER BY C.DATA ASC
LIMIT 1

要将它们组合成一个查询,您可以使用 UNION。但我更喜欢两个不同的查询。

独立地按日期的不同字段排序只会使 DBMS 的事情变得复杂,没有任何好处。所以只需按日期排序即可。

关于php - 查询上一个和下一个匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38563514/

相关文章:

php - 更新特定行textarea和mysql

phpmyadmin - 无法编辑 config.inc.php

mysql - 多表会降低结果的速度吗?

php - 带有变量数组的准备语句

php - 通讯队列的复杂 MySQL 查询

php - 选择框的 onchange 事件

python - 使用Python将多个制表符分隔的文本文件插入MySQL?

mysql - 获取每个组的最后 [n,n+t] 天

javascript - jquery中的ajax请求如何处理504响应头?

MySQL表排序规则突然变成 "in use"