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

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

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

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

Q&A

解決済

4回答

13602閲覧

一つのカラムの中に複数の値を入れたい場合

usui_orange

総合スコア38

MySQL

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

0グッド

0クリップ

投稿2019/02/17 10:02

create tabel user_table( name varchar(20), like varchar(20));

名前とその人の好きなものを保存するテーブルを作りたいとします。名前というカラムに追加する値は一つで十分ですが、likeというカラムの中には複数データを入れたいです。

name 田中太郎 like 野球,メロンパン,睡眠
name 田中次郎 like サッカー
name 田中一郎 like テレビ・ネット・スマートフォン・こたつ

insert into user_table(name,like,like)values("田中太郎","メロンパン","睡眠");

このように書いてもSQLは実行されません。どのようにすれば一つのカラムに複数のデータをもたせることが出来るのでしょうか?

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

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

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

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

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

guest

回答4

0

ベストアンサー

文字列として括らないと駄目ですね。

SQL

1insert into user_table(name,like)values('田中太郎','メロンパン,睡眠')

投稿2019/02/17 10:38

sazi

総合スコア25173

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

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

toto654

2019/03/25 12:54

こんばんは。この問題について調べていてsaziさんのこの回答を拝見したのでコメントさせて頂きます。 saziさんの回答の下に"ユーザーidに紐づくデータを1件1データで保存する"という回答もありますが、 saziさんが回答したように文字列で括る方法と、"ユーザーidに紐づくデータを1件1データで保存する"方法どちらがより適正と考えますか? 過去の質問に対するコメントで失礼します。回答頂けたら幸いです。
sazi

2019/03/25 13:26

正規化するかどうか、という事ですね。 その項目の用途によりけりです。 検索対象だった場合は正規化でしょうけど、キーで取得して画面に展開程度であれば正規化は大袈裟だと思います。 postgresだったら正規化せず配列にしてしまいそうですけど。
toto654

2019/03/25 13:40

回答ありがとうございます! どうするか迷ってましたが、配列にしようと思います。早い回答ありがとうございました!
guest

0

SQLでは文字列はシングルクォーティング(シングルクォートで囲む)します。

SQL

1insert into user_table(name, like) values('田中太郎', 'メロンパン,睡眠');

「メロンパン」の好きな?人だけ取得したい、なんて要望があるなら正規化した方が良いです。
SQLをシンプルにパフォーマンス良く実行できるように、データベースのテーブルはデータベースの正規化 に沿って設計します。通常、第3正規化まで行います。

投稿2019/02/17 10:37

Orlofsky

総合スコア16415

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

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

0

やり方はいくつかあります

  • 適当なデリミタを指定して単なる文字列で保存

たとえばカンマをデリミタとするなら

田中太郎のデータは「メロンパン,睡眠」のような形式
ただし単なる文字列は検索性が低いですが、正規表現などで
ヒットさせることは可能です

  • スペースで単語をわけて全文検索をつかう

  • 選択肢が決まっているならsetをつかう

  • JSON型をつかう

  • ユーザーidに紐づくデータを1件1データで保存する

投稿2019/02/18 01:03

yambejp

総合スコア114784

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

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

0

JSONが良いでしょうが、valueの中にカンマがないならカンマ区切りでも良いでしょう。
この手の質問で、正規化を理解しろ的な意見は無視したほうが良い。

投稿2019/11/12 07:59

編集2019/11/12 08:04
superbiginner

総合スコア14

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問