我得到了两个评级的项目,并使用ORDER by键按正数对它们进行排序,但使用了一个示例表:
//(item)-(pos)-(neg):
item 1 - 50 - 200
item 2 - 24 - 0
item 3 - 15 - 12但是第一个项目的评分确实比其他项目低,我该如何解决这个问题?
发布于 2010-09-05 14:59:18
你可以做ORDER BY pos - neg DESC,但是它会很慢,因为它不能使用索引。
您可以通过在表中显式存储pos - neg的值来反规范化数据库,以便可以对其进行索引以提高性能。通常情况下,反规范化被认为是一件坏事,应该避免,但如果需要提高性能,那么它是一种可以接受的方法。
发布于 2010-09-05 14:58:41
您可以通过从pos中减去neg,然后按该净分数排序来获得净分数。计算它,然后给它一个别名,我们称它为net
mysql> SELECT item, pos, neg, (pos - neg) AS net
-> FROM table
-> ORDER BY net DESC;
+------+-----+-----+------+
| item | pos | neg | net |
+------+-----+-----+------+
| 2 | 24 | 0 | 24 |
| 3 | 15 | 12 | 3 |
| 1 | 50 | 200 | -150 |
+------+-----+-----+------+
3 rows in set (0.00 sec)https://stackoverflow.com/questions/3645242
复制相似问题