質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Q&A

1回答

551閲覧

MySqlのクエリで、data1 data2 data3と自動で順番に入力させる方法

退会済みユーザー

退会済みユーザー

総合スコア0

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

0グッド

0クリップ

投稿2020/08/06 14:18

編集2020/08/11 00:06

前提・実現したいこと

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sazi

2020/08/06 14:47

その数字はどのようなルールで決めるのでしょう? 追加の度に1始まりですか?それとも登録されているデータの最大値+1とか?
退会済みユーザー

退会済みユーザー

2020/08/06 15:06

一つ前のデータ+1です!
退会済みユーザー

退会済みユーザー

2020/08/06 15:07

というか、idにAUTO_INCREMENT設定して、その数を他の一部にも入れたいんですよね。
sazi

2020/08/06 15:24 編集

何に対しての一つ前なんでしょう? それと文字と順番が組み合わされた文字列から番号を求めるなら、その文字列の書式も明確して下さい。 尚、ここのコメントだけではなく質問本文も修正して下さい。
退会済みユーザー

退会済みユーザー

2020/08/06 15:22

分かりましたよ。
sazi

2020/08/06 15:23

それから過去質問はDBツールで接続できたのなら全て解決ですよね。 きちんと解決済みにしてあげて下さいね。
退会済みユーザー

退会済みユーザー

2020/08/06 15:25

ごめんなさい。
退会済みユーザー

退会済みユーザー

2020/08/06 15:27

質問文を修正させて頂きました。 何卒答えて頂けると嬉しいの極みでございます
sazi

2020/08/06 15:31

文字列中に番号を埋める事に関して、文字と番号に分けて疑似列を定義する方が楽ですよ
退会済みユーザー

退会済みユーザー

2020/08/06 15:32

疑似列の定義が分かりません。 ab + 番号 + cd みたいな、結合の事でしょうか?
sazi

2020/08/06 15:47

因みにMySQLのバージョンは何ですか?
退会済みユーザー

退会済みユーザー

2020/08/06 15:49

こんな方法があるのですね。 ですが、数字を上から順番に入れていく方法は乗っていませんでした。 文字同士の足し算にしか使えなくないですか?
sazi

2020/08/06 15:53

生成カラムで ab + [auto_incrimenntのカラム] + cdみたいにするのじゃ目的は果たしませんか?
退会済みユーザー

退会済みユーザー

2020/08/06 15:54

5.7.21だと思います
退会済みユーザー

退会済みユーザー

2020/08/06 15:55

ab + id + cd ってことですか?
sazi

2020/08/06 15:56

そうです。 実際にはconcat()で結合ですけど。
退会済みユーザー

退会済みユーザー

2020/08/06 15:57

concat内では、全てカラム名じゃないといけないとかルールありますか? 例題が fastnameとlastnameという、どちらもカラムにあるものでしたので。
退会済みユーザー

退会済みユーザー

2020/08/06 15:58

もしそうなら、ab cdもカラムとしてどこかに保存しなくてはならないのでしょうか?
退会済みユーザー

退会済みユーザー

2020/08/06 15:59

けど、カラムに保存すれば、同じinsert文を書くだけでどんどん増やす事が可能になるのですかね。?
guest

回答1

0

abとcdの間にidと同じ番号を入れたいです。

SQLで編集可能なものは敢えて項目を持たないようにします。

SQL

1select CONCAT('ab',cast(id as char(3)),'cd') from テーブル

生成カラムを用いて予め定義しておくのも方法です。
MySQL 5.7.6以降で利用可能なGenerated Column

投稿2020/08/06 16:12

sazi

総合スコア25300

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/08/06 23:56

insertではなくselect?
sazi

2020/08/07 00:53

その項目は作らずに利用する際に編集するのです。
退会済みユーザー

退会済みユーザー

2020/08/07 03:31

なるほど
退会済みユーザー

退会済みユーザー

2020/08/07 04:03

やってみると、セットされたとは書かれるのですが、いざ確認してみるとすべてがNULLになってます。 どこのカラムを編集みたいなのはできないのでしょうか? 例えば 例 name data test ab1cd null ab2cd hoge ab3cd とあって、dataに入れていくという選択?はできないんですか? それをしないと、NULLのままになる気がするのですが
退会済みユーザー

退会済みユーザー

2020/08/07 04:08

というかこれ、selectなので編集されなくないですか? ただコピペして編集していきましょうっていうのなら、ほかのプログラミング言語でプログラム作って、コピーしたほうが、わざわざmysqlを使ってやるまでではないと思うのですが?? mysqlを使って、データの入力や追加まで、自動でやりたいのでその方法はありますか?
退会済みユーザー

退会済みユーザー

2020/08/07 04:48

これはほかにカラムを作って、abが入ってるカラムとcdが入ってるカラムを用意して abが入ってるカラムをA cdが入ってるカラムをBと名付けて select CONCAT(A,(id as char(3)),B) from テーブル とやるべきなのでしょうか?
退会済みユーザー

退会済みユーザー

2020/08/07 05:13

結果を見たいのではなく、カラムにデータを入れていきたいです
sazi

2020/08/07 05:43 編集

見ないデータなら入れる必要は無いと思いますけど。 オートナンバーを含めた編集をした結果のデータを保持するなら、発番された結果を使って編集するのでSQLを2回発行したりする事になったりするので、SELECTで取り出し時に編集する方法を紹介したのす。 生成カラムでは実際にカラムにデータが入ることになるので、目的を果たしていると思うんですけど、何が駄目なんでしょう。
sazi

2020/08/07 05:52 編集

初期値としてデータを作成しておいて、後に編集するという場合では、abとかcdとかの値が入るカラムは別途用意しておいて、そちらを編集するようにしておいた方が良いとは思ますけど。 そういった目的があるなら、質問を詳細に記述して下さい。
退会済みユーザー

退会済みユーザー

2020/08/07 06:06

ごめんなさい
sazi

2020/08/07 06:13

因みにやってみて全てNullになったという事ですが、具体的な内容が無いので何とも言えませんが、concat()はその結合項目の何れかがNullだと結果はNUllになります。
sazi

2020/08/07 06:20

insert時に編集したいのであれば、「MySQL 連番」あたりで検索すれば番号を自分で生成するサンプルが見つかりますので、それを利用されれば良いと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問