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

标签 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 创建一个键。

此时任何想法都会有帮助。感谢您的帮助!

最佳答案

一个粗略的方法是在单独的临时表中处理每年的数据。

然后创建另一组临时表来使用 row_number() 等方法确定字母的编号。

用数字更新你的字母。

最后将它们结合在一起。

关于mysql - 根据mysql中的列更改查询结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31842454/

相关文章:

sql - sqlite根据列条件创建新行

Mysql循环遍历选中的列,在循环中执行Insert查询

mysql - 将 Windows MySQL Workbench 8.0 与 Mariadb 和 PAM 身份验证结合使用

php - 如何使用MySQLi更新BBDD。变量应该通过引用传递?

mysql表结构建议?

Java,使用 rs2xml 填充 jTable 时将 jTable 中的 boolean 列更改为复选框

SQL:替代 "First"函数?

mysql - 我可以将 MySQL 中的 EER 图转换为 Microsoft Access 数据库吗?

MySQL 更新语句 MySQL Workbench

php - 如何选择由过程修改的所有数据并将其存储在另一个表中?