【发布时间】:2013-04-19 21:10:33
【问题描述】:
我有一个包含大量数据的视图。我可以使用子查询得到这个结果(数据是好的和优化的):
+------------+
| attendance |
+------------+
| 319 |
| 102 |
| 598 |
| 113 |
| 6 |
| 279 |
| 366 |
| 146 |
| 669 |
| 205 |
| 123 |
+------------+
下次某些用户更新数据时,它会显示:
+------------+
| attendance |
+------------+
| 319 |
| 102 |
| 598 |
| 113 |
| 7 |
| 279 |
| 253 |
| 146 |
| 669 |
| 561 |
| 123 |
+------------+
没关系,因为更新信息的用户是之前有 6 个出席的用户。
但是当我将这些数据用作临时表然后我制作时,问题就来了:
SELECT SUM(attendance) AS total FROM ( /* Subquery returning the above table */)
因为它返回(首先一个用户有 6 个出席):
+-------+
| total |
+-------+
| 3169 |
+-------+
还有 7:
+-------+
| total |
+-------+
| 3128 |
+-------+
什么时候应该是3170!!!
想法?
编辑 1:粘贴完整的查询。
SELECT SUM(att_member) AS total
FROM
(SELECT attendance AS att_member
FROM
(SELECT id_branch_channel, id_member, attendance, TIMESTAMP, id_event
FROM view_event_attendance
WHERE id_event = 782
ORDER BY TIMESTAMP DESC) AS temptable
GROUP BY
id_member) AS total_attendance_temp
编辑 2:粘贴我从这里获得的查询帮助
Select only last value using group by at mysql
这是视图的架构。
【问题讨论】:
-
要么是 MySQL 错误,要么是子查询有问题。我打赌子查询:) 你能发布吗?
-
除非查询非常庞大/丑陋,你能在这里展示它们吗?
-
另请注意,您帖子中的值列表与第 5 行的 6 和 7 不同。第 7 行在第一个列表中也有 366,在第二个列表中有 253,第 10 行有 205第一个列表和第二个列表中的 561 个。
-
@EdGibbs 是的,你是对的。我没有注意到这一点。然后我将搜索子查询...
-
@AbrahamSustaita - 感谢您的链接;现在我明白你为什么需要子查询了:)顺便说一句,在这个问题上做得很好!