2017-01-30 27 views
0

我有一个奇怪的错误,第一次找到这样的结果也许别人也发现了如何超越这种奇怪的错误。Mysql的结果在相同的查询中不同于单身人士

我有一个表的结构是这样的:

|id|uid|test1|test2|rid| 
1 1 -  -  1 
2 1 -  -  1 
3 2 -  -  2 
4 2 -  -  2 
5 3 -  -  3 
6 3 -  -  3 
7 4 -  -  4 
8 4 -  -  4 
---------------------------- 

为 “ - ” 是VARCHAR数据的所有其他列都是整数

我与奇结果查询是这样的:

SELECT COUNT(uid) AS COUNT, 
     id AS ID, 
     uid AS InqID, 
     test1 AS A, 
     test2 AS B 
FROM test_table 
WHERE rid = (X) 
GROUP BY uid 
ORDER BY id DESC 

由于结果我得到 如果(X)= 1或3它显示我正确的最后一个ID n (2个ID为1和6个ID为3) 但如果(X)是2或4它显示我第一个在行ID号(3 ID为2而不是4和7 ID为4而不是8)

任何人都可以告诉我为什么我得到正确的结果只有在摆脱单打,而不是在摆列的偶数或至少这个查询将如何工作,因为它已?

谢谢大家提前

+0

对于正确使用'组by'不包括在一个agregated功能应该是在'GROUP BY',在mysql中你被允许使用这种sintaxis,但返回的行是随机的所有领域。 –

+0

@Juan Carlos Oropeza感谢您的纠正和回应。 – Nocs

+0

[检索每个组中的最后一条记录]的可能的副本(http://stackoverflow.com/questions/1313120/retrieving-the-last-record-in-each-group) –

回答

1

使用MAX(id)而不是ORDER BY。

SELECT COUNT(uid) AS COUNT, MAX(id) AS ID, uid AS InqID, test1 AS A, test2 AS B 
FROM test_table 
WHERE rid = (X) 
GROUP BY uid 
+0

谢谢,是的,它工作完美 – Nocs

+1

只是要小心,即使在这种情况下工作,一个小的变化和数据可以打破它。 –

相关问题