php - MySQL降序问题
问题描述
我的查询:
$strSQL = "Select customers.*, count(ordersbase.OrderID) As Orders, ordersbase.OrderTime
From customers
Inner Join ordersbase On customers.ID = ordersbase.CustomerID
Group By customers.ID
Order By customers.ID, ordersbase.OrderTime Desc;";
订单表:
我希望将OrderTime
值设为20181008000000
(按降序排列的最高值),但它返回另一个值:
"0": {
"Orders": 2,
"OrderTime": "20181006000000"
},
解决方案
数据以无序的方式存储。子句中的任何非聚合列(在功能上不依赖于 中的列
Group By
)Select
,也没有在GROUP BY
子句内明确指定,都是不确定的。您需要使用Max()
函数来获取最新的订单时间。阅读:SELECT 列表不在 GROUP BY 子句中,并且包含非聚合列 .... 与 sql_mode=only_full_group_by 不兼容Order by
在分组完成后处理。所以,你的使用Order by
不起作用。
请尝试以下操作:
$strSQL = "Select customers.*,
count(ordersbase.OrderID) As Orders,
MAX(ordersbase.OrderTime)
From customers
Inner Join ordersbase On customers.ID = ordersbase.CustomerID
Group By customers.ID
Order By customers.ID";
推荐阅读
- python - 忽略 s3 文件名中的元字符
- julia - Julia 中操作系统特定的 PATH 分隔符
- swift - 如何测试应用程序是否呈现某个视图控制器?
- c# - .NET Core 3.1 相同的 OAuth 令牌获取失败,但适用于完整的 .NET Framework
- tensorflow - 从源 TensorFlow 版本构建与 CUDA 版本的兼容性
- c# - MVVM - 从模型到视图模型,模型保持不变
- java - 将返回带有答案的布尔值的方法
- python - 使用python在CIDR中的IP地址和掩码
- python - 使用open-cv python检测图像中的线条后获取矩形坐标
- java - 为什么 AudioManager 不适用于我的 Android 应用程序?