您好我有以下问题:
select t.*
from (SELECT *
FROM Matches
where HID=:ID or AID=:ID
order by Date desc
limit 10
) t
order by t.Date, t.Time asc
作为PDO准备语句的一部分,我有两个网站在ubuntu上运行一个,一个在Windows 7上使用Xampp,数据是相同的但是在ubuntu框中它返回了最后10个游戏的日期和时间顺序。在Windows框中,十个游戏(列表中的第一个)实际上是一个较早的游戏(在同一个晚上一个游戏,下午6:15,另一个在晚上7点播放),后者应该显示但不在窗户框。这似乎有点奇怪。只是想知道是否有其他人曾经遇到过这个问题?
答案 0 :(得分:1)
数据在一个日期包含两个游戏,但时间不同。如果您没有按时间排序游戏,则行顺序未确定。没有ORDER BY
行可以出现在任何地方。在大多数情况下,首先插入表行将首先输出。但这不是记录在案的行为,您不能使用它。在您的情况下,不会按时间进行隐式排序。今天你将在第一排晚上7点到达,明天可能是下午6点15分。
为了在不同的计算机上接收相同的结果,您必须正确排序,没有不相关的行为。只需在子查询中按时间添加排序,您将始终在具有相同数据的任何MySQL实例上获得相同的结果。
SELECT t.* FROM (
SELECT *
FROM Matches
WHERE HID = :ID OR AID = :ID
ORDER BY `Date` DESC, `Time` DESC
LIMIT 10
) t
ORDER BY t.Date, t.Time
这将返回真正的10场比赛。
答案 1 :(得分:0)
您使用不同的MySQL安装吗?我可以想象不同的安装处理方式不同。
此外,您确定Windows机顶盒上存在7:00 PM的游戏记录吗?推送数据库中的记录可能会出现问题。