我有一个表,其中包含一些类似的行,它们代表游戏的对象。我使用此表作为随机选择对象的方法。当然,我忽略了表的大小。我的问题是,我希望有一个查询,该查询返回选择每个对象的可能性,而我不知道该如何进行。
我可以获得表中的对象总数:
select count(id) from objects_desert_tb;
返回哪个
+-----------+
| count(id) |
+-----------+
| 81 |
+-----------+
1 row in set (0.00 sec)
我有一个查询,返回表中每个对象的出现次数:
select name,(count(name)) from objects_desert_tb group by name;
给出:
+-------------------+---------------+
| name | (count(name)) |
+-------------------+---------------+
| carrots | 5 |
| metal_scraps | 14 |
| plastic_tarpaulin | 8 |
| rocks_and_stones | 30 |
| wood_scraps | 24 |
+-------------------+---------------+
5 rows in set (0.00 sec)
计算每个对象的概率仅在于将(count(name))除以表中的总行数。例如,对于胡萝卜行,只需从上面给出的两个查询中计算出5/81。我想返回一个查询:
+-------------------+---------------+
| carrots | 5/81 = 0.06172839
| metal_scraps | 0.1728...
| plastic_tarpaulin | 0.09876...
| rocks_and_stones | 0.37...
| wood_scraps | 0.29...
+-------------------+---------------+
是否可以使用表的大小作为SQL查询中的变量?也许通过嵌套几个查询?