我有一个lottery_winners
用以下有用的列调用的表:
+----+------+------+--------+---------+ | 编号 | 夹层 | 出价 | 金额 | 数字 | +----+------+------+--------+---------+
id
是表的唯一主 ID。plid
指past_lotteries
表(即我可以通过这种方式获取过去某个特定彩票中的所有彩票中奖者。zbid
是会员/用户(中奖者)的id。amount
是他们在彩票中中奖的金额总和,最后numbers
是带有VARCHAR
彩票号码的 CSV 字段。
这是表中可能包含哪些行的示例:
+----+------+------+--------+---------+ | 编号 | 夹层 | 出价 | 金额 | 数字 | +----+------+------+--------+---------+ | 1 | 1 | 2 | 1 | 1,2,3 | +----+------+------+--------+---------+ | 2 | 1 | 4 | 5 | 4,5,6 | +----+------+------+--------+---------+ | 3 | 1 | 3 | 7 | 3,4,5 | +----+------+------+--------+---------+ | 4 | 1 | 2 | 3 | 7,8,9 | +----+------+------+--------+---------+ | 5 | 2 | 2 | 8 | 8,9,10 | +----+------+------+--------+---------+
现在,我想运行一个SELECT
语句,它将带回所有行,但以非常特定的顺序。这些行应该这样分组zbid
(在这种情况下,我添加了一个WHERE plid=1
子句):
+----+------+------+--------+---------+ | 编号 | 夹层 | 出价 | 金额 | 数字 | +----+------+------+--------+---------+ | 1 | 1 | 2 | 1 | 1,2,3 | +----+------+------+--------+---------+ | 4 | 1 | 2 | 3 | 7,8,9 | +----+------+------+--------+---------+ | 2 | 1 | 4 | 5 | 4,5,6 | +----+------+------+--------+---------+ | 3 | 1 | 3 | 7 | 3,4,5 | +----+------+------+--------+---------+
下一个标准是它们不仅应该按 分组zbid
,而且在这个分组中它们应该按 排序amount DESC
。这就是它现在的样子:
+----+------+------+--------+---------+ | 编号 | 夹层 | 出价 | 金额 | 数字 | +----+------+------+--------+---------+ | 4 | 1 | 2 | 3 | 7,8,9 | +----+------+------+--------+---------+ | 1 | 1 | 2 | 1 | 1,2,3 | +----+------+------+--------+---------+ | 2 | 1 | 4 | 5 | 4,5,6 | +----+------+------+--------+---------+ | 3 | 1 | 3 | 7 | 3,4,5 | +----+------+------+--------+---------+
前两排互换了位置。
还有一个标准。如您所见,虽然它们按 分组,但它们zbid
没有特定的顺序。我希望它按 分组zbid
,但顺序应基于sum(amount)
每个组。
下表zbid
以无特定顺序显示了每个的总数(考虑到plid=1
:
+--------+-------------+ | 出价 | 总和(金额) | +--------+-------------+ | 2 | 4 | +--------+-------------+ | 3 | 7 | +--------+-------------+ | 4 | 5 | +--------+-------------+
因此,使用此信息,使用该SELECT
语句的最终结果应如下(带有添加的sum(amount)
列):
+----+------+------+--------+---------+----------- --+ | 编号 | 夹层 | 出价 | 金额 | 数字 | 总和(金额) | +----+------+------+--------+---------+----------- --+ | 3 | 1 | 3 | 7 | 3,4,5 | 7 | +----+------+------+--------+---------+----------- --+ | 2 | 1 | 4 | 5 | 4,5,6 | 5 | +----+------+------+--------+---------+----------- --+ | 4 | 1 | 2 | 3 | 7,8,9 | 4 | +----+------+------+--------+---------+----------- --+ | 1 | 1 | 2 | 1 | 1,2,3 | 4 | +----+------+------+--------+---------+----------- --+
就是这样!现在我自己尝试了几件事,但我不确定如何获得完整的最终结果。我试过了:
SELECT id,plid,zbid,amount,numbers,sum(amount) FROM lottery_winners GROUP BY zbid ORDER BY sum(amount) DESC
现在这似乎符合最终标准,但它并没有给我表格的个人结果。
另请注意,由于这些结果将被分页,因此我需要将其添加LIMIT $start,$perpage
到查询的末尾。