根据mysql中的列更改查询结果

时间:2015-08-05 20:43:07

标签: mysql sql mysql-workbench

我有一张桌子,里面有不同年份的几个结果。我的第一年是我的决定年(根据第一年的所有年份)。我的第一年专栏按结果计数降序排列。 这是我的表格的示例。

+----+------+-------+------+------+
| ID | Year | ID2   |Year1 |Year2 |
+----+------+-------+------+------+
|  1 | 1    | 12    |B     |      |
|  1 | 1    | 13    |B     |      |
|  1 | 1    | 22    |A     |      |
|  1 | 2    | 12    |      |B     |
|  1 | 2    | 15    |      |A     |
|  1 | 2    | 17    |      |C     |
|  1 | 2    | 25    |      |C     |
|  1 | 2    | 30    |      |D     |
+----+------+-------+------+------+

Year1Year2需要更改为数字。第一个结果是1(因此,B将变为1),第二个结果将是2(因此,A将变为2),依此类推。

Year1是主列,用于决定列Year2中的内容。这意味着,列Year2中的结果将从列Year1(B = 1,A = 2)获得结果,但一旦引入新结果,结果将增加1(C将为3和D将是4)

所以表格看起来应该是这样的。

+----+------+-------+------+------+
| ID | Year | ID2   |Year1 |Year2 |
+----+------+-------+------+------+
|  1 | 1    | 12    |1     |      |
|  1 | 1    | 13    |1     |      |
|  1 | 1    | 22    |2     |      |
|  1 | 2    | 12    |      |1     |
|  1 | 2    | 15    |      |2     |
|  1 | 2    | 17    |      |3     |
|  1 | 2    | 25    |      |3     |
|  1 | 2    | 30    |      |4     |
+----+------+-------+------+------+

另外,这些列将持续到Year10,而IDYearID2列会创建一个密钥。

任何想法都会有所帮助。谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

这样做的一个粗略方法是在单独的临时表中执行每年的数据。

然后创建另一组临时表,以使用row_number()之类的内容确定字母的编号。

用数字更新你的信件。

最后将他们联合起来。