サンプルテーブル
--------------------------- --------
| 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を超えることは決してないので、それに対処することは問題ではありません
最初に数値(つまり、A、B、Cの代わりに1、2、3)を生成してから、の線に沿って何かを実行できると思い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()