前提・実現したいこと
MySqlのクエリで、insertするときに文字と同時に順番に数字を入れていきたいです。
例
name data
test ab1cd
null ab2cd
hoge ab3cd
のように、abとcdの間にidと同じ番号を入れたいです。
このようなことは可能なのでしょうか?
クエリだけでは不可能で、プログラムをくんで、変数でどうにかすることしかできないのでしょうか?
何卒ご教授お願いします。。
試したこと
pythonを使って簡単なプログラムを作って、while文でinsertするというのをやってみたのですが、pythonでinsertなどのmysqlを操作する方法が分からなかったので、クエリだけでできないか質問しました。
補足情報(FW/ツールのバージョンなど)
Windows10
MySql
Python3.7
A5MK2
ConohaVPS
その数字はどのようなルールで決めるのでしょう?
追加の度に1始まりですか?それとも登録されているデータの最大値+1とか?
一つ前のデータ+1です!
というか、idにAUTO_INCREMENT設定して、その数を他の一部にも入れたいんですよね。
何に対しての一つ前なんでしょう?
それと文字と順番が組み合わされた文字列から番号を求めるなら、その文字列の書式も明確して下さい。
尚、ここのコメントだけではなく質問本文も修正して下さい。
分かりましたよ。
それから過去質問はDBツールで接続できたのなら全て解決ですよね。
きちんと解決済みにしてあげて下さいね。
ごめんなさい。
質問文を修正させて頂きました。
何卒答えて頂けると嬉しいの極みでございます
文字列中に番号を埋める事に関して、文字と番号に分けて疑似列を定義する方が楽ですよ
疑似列の定義が分かりません。
ab + 番号 + cd
みたいな、結合の事でしょうか?
疑似列ではなく「生成カラム」でした。
MySQL 5.7.6以降ですけど。
http://www.dcom-web.co.jp/lab/database/mysql/generated_column
因みにMySQLのバージョンは何ですか?
こんな方法があるのですね。
ですが、数字を上から順番に入れていく方法は乗っていませんでした。
文字同士の足し算にしか使えなくないですか?
生成カラムで ab + [auto_incrimenntのカラム] + cdみたいにするのじゃ目的は果たしませんか?
5.7.21だと思います
ab + id + cd
ってことですか?
そうです。
実際にはconcat()で結合ですけど。
concat内では、全てカラム名じゃないといけないとかルールありますか?
例題が
fastnameとlastnameという、どちらもカラムにあるものでしたので。
もしそうなら、ab cdもカラムとしてどこかに保存しなくてはならないのでしょうか?
けど、カラムに保存すれば、同じinsert文を書くだけでどんどん増やす事が可能になるのですかね。?