【发布时间】:2013-02-09 15:18:56
【问题描述】:
让我们拥有这张桌子(rank_list)。
+--------+--------+--------+--------+
| Sub | Name | Rank | Marks |
+--------+--------+--------+--------+
|Math2 |Smith | 1| 85|
|Math1 |John | 1| 92|
|Math1 |Susan | 2| 91|
|Math1 |Abc | 3| 90.5|
+--------+--------+--------+--------+
现在我还有四个结果。我必须插入这些给他们正确的排名。我也不接受排名超过 3 的结果。
Sub = Math2, Name = Mile, Marks = 86
Sub = Math1, Name = Luna, Marks = 92.5
Sub = Physics1, Name = Sakib, Marks = 88.75
Sub = Math1, Name = Coolb, Marks = 65
由于Mile有一个排名第2的标记,他将被插入为Rank 2。
Luna 的分数最高,她将获得Rank 1 并且Abc 将被删除(是的,已删除)。
Sakib来自Physics1,因此他将被直接插入,因为他目前在物理学中排名第一。
Coolb 不在前 3 名,因此不会被插入。
我希望 MySQL 查询执行此操作。
我可以使用PHP 执行此操作,但这需要很长时间。所以,我想用 SQL 来做这个(为了更快的插入和删除)。我需要你的帮助。提前致谢。
【问题讨论】:
-
更好的方法可能是将原始数据插入到一个表中,并使用视图来表示每个主题中排名靠前的。
-
我同意@IanMcMahon。存储所有记录,然后在需要时提取所需的内容。
-
领带应该怎么做?
-
@ypercube- 没有,不会被插入
-
请澄清您回复@ypercube 的“不会被插入”位。如果有两个新的
Math1行具有相同的Marks和91,即使它们中的每一个都大于排名第三的Abc,您是否愿意忽略这两个行?或者您只想丢弃一个?在这种情况下,自然的问题是“哪个?”。
标签: php mysql sql phpmyadmin