样品表
--------------------------- --------
| id | user | num | type | ---> Want to get | name |
--------------------------- --------
| 5 | 1 | 2 | Q | | Q2A |
--------------------------- --------
| 10 | 1 | 2 | Q | | Q2B |
--------------------------- --------
| 11 | 1 | 2 | Q | | Q2C |
--------------------------- --------
| 12 | 2 | 2 | Q | | Q2A |
--------------------------- --------
| 14 | 1 | 3 | R | | R3A |
--------------------------- --------
| 17 | 2 | 3 | R | | R3A |
--------------------------- --------
解释
我有一个简单的数据库模式,如左图所示。我需要使用 SQL 根据值生成给定的名称列。我已经想出了如何CONCAT(type,num)
,但我不知道如何生成正确的字母。我知道这样的事情在 SQL 中是可能的,因为我很久以前就做过类似的事情。
编号方案
对于每个用户,随着找到更多具有相同num
和type
的行,字母应该从 AZ 开始。永远不会超过 26 个,所以处理这不是问题
我想我可以首先生成数字(即 1、2、3 而不是 A、B、C),然后按照以下方式进行操作SELECT 1 FROM [A..Z]
,我只是不确定如何在 MySQL 中完成此操作。
更新
If I can get from here: To:
--------------------------- --------------
| id | user | num | type | | name | seq |
--------------------------- --------------
| 5 | 1 | 2 | Q | | Q2 | 1 |
--------------------------- --------------
| 10 | 1 | 2 | Q | | Q2 | 2 |
--------------------------- --------------
| 11 | 1 | 2 | Q | | Q2 | 3 |
--------------------------- --------------
| 12 | 2 | 2 | Q | | Q2 | 1 |
--------------------------- --------------
| 14 | 1 | 3 | R | | R3 | 1 |
--------------------------- --------------
| 17 | 2 | 3 | R | | R3 | 1 |
--------------------------- --------------
Then its just a simple matter of using CHAR()