按日期排序的SQL结果顺序,计数(日期)

时间:2012-09-02 11:03:18

标签: mysql sql count sql-order-by

我在sql请求中看到一个奇怪的行为。

我的表点记录:

# Column Type
1 date timestamp 2 uid varchar(30)
3 ssid varchar(40)
4 reason varchar(50)
5 points int(5) No None

声明:

SELECT date, count(date) as anzahl FROM pointLog WHERE uid = 1 order by date desc 

返回以下结果

    date                anzahl
2012-09-01 12:21:16     14

但声明:

SELECT date FROM pointLog WHERE uid = 1 order by date desc 

返回

2012-09-02 12:44:08

作为第一个结果。

所以我的问题:为什么我在第一个包含计数的语句中没有收到2012-09-02作为第一个结果?

非常感谢!

修改 计数为anzahl的atm仅用于验证此示例中有多于0个条目。我知道它应该在程序中进行测试。

但我的主要问题是,我无法解释,为什么我按相同(日期)排序时会得到2个不同的日期。所以唯一的区别是count属性。但这通常不会改变排序?

FINAL * 解决方案

SELECT MAX(date) AS maxdate, COUNT(date) AS anzahl FROM pointLog WHERE uid = 1

3 个答案:

答案 0 :(得分:1)

你得到一个结果:日期的计数,以任意日期开头。然后ORDER BY语句对它进行排序,这是一个无操作,因为只有一行输出。

答案 1 :(得分:0)

您的SQL语句中需要GROUP BY,否则COUNT()不会为每个日期提供单独的总计。

答案 2 :(得分:0)

正如@prosfilaes所回答,您的查询未返回确定性结果,date以任意方式返回。

如果您想要最新的日期和计数,可以使用:

SELECT 
    MAX(date) AS maxdate, 
    COUNT(date) AS anzahl 
FROM 
    pointLog 
WHERE 
    uid = 1 ;