查询上一个和下一个匹配项
Query previous and next match
我有一个带有 table "CALENDAR" 的 phpmyadmin 数据库,其中包含团队之间所有比赛的列表。
这是结构:
ID,TEAM_HOME,TEAM_AWAY,日期,RESULT_HOME,RESULT_AWAY
我需要创建一个 mysql 查询,其中 return 只有 2 条记录:上一场比赛(因此 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
如果您需要更多详细信息,请告诉我
如果你想return最后两场比赛?
如果是这样的话试试DESC 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 的事情变得复杂,没有任何好处。所以只按日期排序。
我已经这样做了:
(SELECT * 来自 C 的日历,其中 RESULT_HOME <> 0 和 RESULT_AWAY <> 0
按 C.DATA 排序限制 1)
联盟
(SELECT * 来自 C 的日历,其中 RESULT_HOME = 0 或 RESULT_AWAY = 0
ORDER BY C.DATA ASC 限制 1)
谢谢!
我有一个带有 table "CALENDAR" 的 phpmyadmin 数据库,其中包含团队之间所有比赛的列表。
这是结构: ID,TEAM_HOME,TEAM_AWAY,日期,RESULT_HOME,RESULT_AWAY
我需要创建一个 mysql 查询,其中 return 只有 2 条记录:上一场比赛(因此 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
如果您需要更多详细信息,请告诉我
如果你想return最后两场比赛?
如果是这样的话试试DESC 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 的事情变得复杂,没有任何好处。所以只按日期排序。
我已经这样做了:
(SELECT * 来自 C 的日历,其中 RESULT_HOME <> 0 和 RESULT_AWAY <> 0 按 C.DATA 排序限制 1)
联盟
(SELECT * 来自 C 的日历,其中 RESULT_HOME = 0 或 RESULT_AWAY = 0 ORDER BY C.DATA ASC 限制 1)
谢谢!