通過變動日誌獲取某一時刻所有使用者的帳號餘額

壹頁書發表於2016-06-22
初始化資料:
  1. create table account(    
  2.     userid int not null,    
  3.     diamondCount int not null,    
  4.     primary key(userid)    
  5. );    
  6.     
  7. create table account_log(    
  8.     id int not null primary key auto_increment,    
  9.     userid int ,    
  10.     changeCount int,    
  11.     createtime timestamp    
  12. );    
  13.     
  14. INSERT INTO `account` (`userid`,`diamondCount`) VALUES (2,483);    
  15. INSERT INTO `account` (`userid`,`diamondCount`) VALUES (3,377);    
  16. INSERT INTO `account` (`userid`,`diamondCount`) VALUES (4,334);    
  17. INSERT INTO `account` (`userid`,`diamondCount`) VALUES (5,449);    
  18. INSERT INTO `account` (`userid`,`diamondCount`) VALUES (6,576);    
  19. INSERT INTO `account` (`userid`,`diamondCount`) VALUES (7,624);    
  20. INSERT INTO `account` (`userid`,`diamondCount`) VALUES (8,450);    
  21. INSERT INTO `account` (`userid`,`diamondCount`) VALUES (9,566);    
  22. INSERT INTO `account` (`userid`,`diamondCount`) VALUES (10,463);    
  23. INSERT INTO `account` (`userid`,`diamondCount`) VALUES (11,410);    
  24.     
  25.     
  26. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (1,2,59,'2016-06-22 17:19:57');    
  27. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (2,2,43,'2016-06-22 15:18:57');    
  28. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (3,2,84,'2016-06-22 14:28:57');    
  29. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (4,2,7,'2016-06-22 16:53:57');    
  30. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (5,2,68,'2016-06-22 10:50:57');    
  31. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (6,2,30,'2016-06-22 09:24:57');    
  32. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (7,2,45,'2016-06-22 10:32:57');    
  33. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (8,2,88,'2016-06-22 12:08:57');    
  34. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (9,2,59,'2016-06-22 08:44:57');    
  35. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (10,3,34,'2016-06-22 16:42:57');    
  36. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (11,3,4,'2016-06-22 15:33:57');    
  37. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (12,3,64,'2016-06-22 13:25:57');    
  38. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (13,3,73,'2016-06-22 12:18:57');    
  39. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (14,3,13,'2016-06-22 17:52:57');    
  40. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (15,3,75,'2016-06-22 11:19:57');    
  41. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (16,3,12,'2016-06-22 11:23:57');    
  42. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (17,3,51,'2016-06-22 07:20:57');    
  43. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (18,3,51,'2016-06-22 16:24:57');    
  44. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (19,4,4,'2016-06-22 16:37:57');    
  45. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (20,4,18,'2016-06-22 17:02:57');    
  46. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (21,4,98,'2016-06-22 13:03:57');    
  47. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (22,4,5,'2016-06-22 16:26:57');    
  48. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (23,4,7,'2016-06-22 13:07:57');    
  49. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (24,4,77,'2016-06-22 17:24:57');    
  50. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (25,4,2,'2016-06-22 07:37:57');    
  51. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (26,4,42,'2016-06-22 12:32:57');    
  52. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (27,4,81,'2016-06-22 05:58:57');    
  53. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (28,5,60,'2016-06-22 17:05:57');    
  54. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (29,5,7,'2016-06-22 16:01:57');    
  55. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (30,5,84,'2016-06-22 16:15:57');    
  56. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (31,5,29,'2016-06-22 15:34:57');    
  57. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (32,5,99,'2016-06-22 11:13:57');    
  58. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (33,5,14,'2016-06-22 15:44:57');    
  59. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (34,5,74,'2016-06-22 06:25:57');    
  60. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (35,5,78,'2016-06-22 06:26:57');    
  61. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (36,5,4,'2016-06-22 09:28:57');    
  62. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (37,6,75,'2016-06-22 17:59:57');    
  63. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (38,6,91,'2016-06-22 16:33:57');    
  64. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (39,6,51,'2016-06-22 17:03:57');    
  65. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (40,6,48,'2016-06-22 13:01:57');    
  66. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (41,6,37,'2016-06-22 13:26:57');    
  67. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (42,6,68,'2016-06-22 10:52:57');    
  68. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (43,6,56,'2016-06-22 10:35:57');    
  69. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (44,6,53,'2016-06-22 08:35:57');    
  70. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (45,6,97,'2016-06-22 07:24:57');    
  71. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (46,7,65,'2016-06-22 17:52:57');    
  72. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (47,7,57,'2016-06-22 16:15:57');    
  73. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (48,7,99,'2016-06-22 16:33:57');    
  74. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (49,7,56,'2016-06-22 12:18:57');    
  75. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (50,7,65,'2016-06-22 12:32:57');    
  76. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (51,7,36,'2016-06-22 10:01:57');    
  77. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (52,7,94,'2016-06-22 14:37:57');    
  78. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (53,7,65,'2016-06-22 13:12:57');    
  79. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (54,7,87,'2016-06-22 14:09:57');    
  80. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (55,8,69,'2016-06-22 16:56:57');    
  81. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (56,8,27,'2016-06-22 17:00:57');    
  82. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (57,8,78,'2016-06-22 13:27:57');    
  83. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (58,8,29,'2016-06-22 13:40:57');    
  84. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (59,8,43,'2016-06-22 16:34:57');    
  85. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (60,8,61,'2016-06-22 13:12:57');    
  86. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (61,8,62,'2016-06-22 11:03:57');    
  87. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (62,8,17,'2016-06-22 17:41:57');    
  88. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (63,8,64,'2016-06-22 16:18:57');    
  89. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (64,9,67,'2016-06-22 16:27:57');    
  90. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (65,9,82,'2016-06-22 17:23:57');    
  91. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (66,9,54,'2016-06-22 17:38:57');    
  92. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (67,9,81,'2016-06-22 12:51:57');    
  93. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (68,9,48,'2016-06-22 17:32:57');    
  94. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (69,9,87,'2016-06-22 16:34:57');    
  95. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (70,9,14,'2016-06-22 15:09:57');    
  96. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (71,9,83,'2016-06-22 12:46:57');    
  97. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (72,9,50,'2016-06-22 13:53:57');    
  98. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (73,10,91,'2016-06-22 16:53:57');    
  99. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (74,10,78,'2016-06-22 15:22:57');    
  100. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (75,10,67,'2016-06-22 13:25:57');    
  101. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (76,10,64,'2016-06-22 15:25:57');    
  102. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (77,10,7,'2016-06-22 16:44:57');    
  103. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (78,10,58,'2016-06-22 13:45:57');    
  104. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (79,10,41,'2016-06-22 09:20:57');    
  105. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (80,10,52,'2016-06-22 13:50:57');    
  106. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (81,10,5,'2016-06-22 13:55:57');    
  107. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (82,11,25,'2016-06-22 17:25:57');    
  108. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (83,11,18,'2016-06-22 15:39:57');    
  109. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (84,11,8,'2016-06-22 16:50:57');    
  110. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (85,11,98,'2016-06-22 17:06:57');    
  111. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (86,11,79,'2016-06-22 13:47:57');    
  112. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (87,11,20,'2016-06-22 13:37:57');    
  113. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (88,11,63,'2016-06-22 08:50:57');    
  114. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (89,11,8,'2016-06-22 17:39:57');    
  115. INSERT INTO `account_log` (`id`,`userid`,`changeCount`,`createtime`) VALUES (90,11,91,'2016-06-22 11:14:57');   

account是帳號表,儲存使用者ID和餘額(diamondCount)
account_log 是帳號變動表,每次帳號的變動,都有相關的記錄.

通過account_log,可以批量獲取使用者在某個時間點的帳號餘額資訊.
主要是用於核驗資訊.

查詢2016-06-22 10:00:00 所有使用者的帳號餘額

  1. select   
  2.     userid,  
  3.     diamondcount - (select   
  4.             sum(changeCount)  
  5.         from  
  6.             account_log log  
  7.         where  
  8.             log.createtime >= '2016-06-22 10:00:00'  
  9.                 and log.userid = a.userid) changecount  
  10. from  
  11.     account a;  


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29254281/viewspace-2120736/,如需轉載,請註明出處,否則將追究法律責任。

相關文章