MySQL SQL質問応答スレ [無断転載禁止]©2ch.net (148レス)
1-

49
(1): 2022/04/13(水)13:06 ID:??? AAS
例えばそれ以外のカラムにはなく、aname1 には '探し物' があるような
データに特別な意味を持つテーブルなのかどうか
50
(1): 2022/04/13(水)13:48 ID:??? AAS
>>48
ちょっと考えてみます
>>49
テーブルの方の例ですが
aname1:りんご
aname2:リンゴ
aname3:林檎
と入れてありまして、どの文字列でもこのレコードの情報(価格や産地など)を得たい
ということなのです
51
(1): 2022/04/13(水)17:13 ID:??? AAS
そういう仕様はDBに押しつけるものではないと思う
52
(1): 2022/04/13(水)17:19 ID:??? AAS
適当な区切文字を選んで、(例えば$$として)
aname に 'リンゴ$$りんご$$林檎' をセットする
検索時にaname like '%keyword%'ってやる
53: 2022/04/13(水)20:13 ID:??? AAS
>>51
うーむそういうものですか…DB扱うの初めてなもので…
>>52
なーるほど
と思いましたが他の例えば「りんご飴」レコードも検索されてしまいますので
でも文字数チェックすればいけるかも
でもそもそもそういう風に使用すべきで無いとの意見もありましたし
もう少し考えてみたいと思いますありがとうございました
54
(1): 2022/04/13(水)20:16 ID:??? AAS
'りんご飴'にヒットさせたくないなら

aname like '%$$keyword$$%'
55: 2022/04/13(水)22:32 ID:??? AAS
>>54
う、それいけるかも
元々csvからインポートしてるだけだけど工夫したら自動で変換もできるかも
色々ご相談にのって頂いてご意見いただきましてありがとうです
56
(1): 2022/04/13(水)22:43 ID:??? AAS
言い忘れた
データの先頭に$$を入れてね
57
(2): 2022/04/16(土)10:21 ID:ybfRD06C(1) AAS
あ別称管理用のテーブルを別立てするのがいいと思う
https://paiza.io/projects/bMgSep4_4VUjIwA_RsPRlw?language=mysql
58: 2022/04/16(土)19:05 ID:lQwNRS+V(1) AAS
自作自演なのか、暇人ですな。
59
(1): 2022/04/18(月)09:53 ID:kyGyX9T4(1) AAS
>>50
それで1つのレコードを指し示す名前が80個にもなるの?
リンゴの例だと想像つかないけど
60
(1): 2022/04/18(月)13:11 ID:??? AAS
>>56
了解です
結局 or 羅列方式で進行中ですが…
>>57
アドバイスありがとうございます今後検討してみたいと思います
>>59
りんごの例ですとせいぜい数個なのですが
食品名って地方によって呼び名が変わったり
別名があったり
それぞれひらがなカタカナ漢字の組み合わせがあったりで
省2
61
(1): 2022/04/18(月)14:20 ID:??? AAS
>>60
なるほど、じゃ正式名称として使うものは元のテーブルにも残しつつ
>>57が書いてるような別名用のテーブルを用意するのがよさそう
62: 2022/04/18(月)21:57 ID:??? AAS
>>61
別に専用テーブルを設けるのが一番美しいと言うか普通なのかな
ひとつで管理の方が簡単かなとも思ったんですけどRDBってくらいだし面白そうだし
ちょっと本気で検討してみます
つか別の案件が急に入ってしまって(何とdelphi案件!)少し寝かしておいてまた質問等ありましたらよろしくお願いします。
delphiはくだすれがあったような遠い記憶…
63: 2022/04/18(月)22:15 ID:??? AAS
要素数が可変なら列じゃなく行にするのが定石
64: 2022/04/20(水)10:49 ID:dKdNo1WH(1) AAS
「名前」「メールアドレス」など、多数の文字列が入らないカラムの場合、
データ型はtextで良いですかね?それともvarcharで指定するべきですか?
65
(1): 2022/04/20(水)11:59 ID:??? AAS
そのフィールドを頻繁に検索するならvarcharの方がいいんじゃね?
稀に使う程度ならどっちでもいいけど
66: 2022/04/20(水)12:19 ID:??? AAS
RFCの規定だと、全体の最大長は256文字だそうだ
67
(1): 2022/04/20(水)12:44 ID:??? AAS
>>65
like検索はしますが、=検索はしないという想定です。
指定したほうが検索が早いのはわかるのですが、
それ以外にメリットありますかね?
(文字数制限はアプリ側でするとして
68: 2022/04/20(水)12:53 ID:sfLQoamO(1) AAS
石橋薫というおっさんと仕事を一緒にしたら死ぬぞ
69: 2022/04/20(水)21:49 ID:??? AAS
>>67
5.7系の場合はtemp tableが必要になった場合の速度が違う

8.0系の場合はTempTableエンジン使っていれば性能的な差は気にしなくてもいいけど
Postgresと違ってMySQLのtext型は掲示板のレスのような長い可変文字列を格納する型として定着してるので
メールアドレスや名前みたいなのに使うと他の人が見ると混乱する

DBのデータ型でも簡単に文字数制限できるのに
それをアプリだけでやるというのは良くない設計
70: 2022/04/21(木)01:20 ID:PsjOjBp3(1) AAS
実際に格納されている文字列長分の領域しか使っていない、事前に領域を確保していない、使わなくなった領域は穴埋めで再利用されると思うのは、データベースエンジニアでもいるくらいだからなあ。

データの物理位置を常に移動させていたら、とてもじゃないが、使い物にならない速度になってしまう。

なんとなく大きなデータ型を使うのは、アンチパターンどころか、絶対にやってはいけないレベル。
71: 2022/05/01(日)17:56 ID:??? AAS
スキーマ名にutf8な日本語が含まれている場合に、mysqldumpでうまくスキーマごとにダンプすることってできますか?エロい人。
Windows版の5.7です。
72: 2022/06/04(土)19:11 ID:??? AAS
ローカル環境の8でTEXT型20万行に対しnot in検索かけたらこの世の終わりみたいな音出してたよ
73: 2022/06/05(日)12:37 ID:??? AAS
マルチバイトを使わない文字列が1カラムあるテーブルがあって
password
Password
PASSWORD
あって、区別するにはBINARYを使うというまではわかったんだけど、

このカラムにプライマリキーやuniqueを設定しようとすると重複してダメと言われるけど、大文字小文字が混在する場合は無理?
1カラムしか無い場合はプライマリーキーとかは設定しなくていいの?
74: 2022/06/05(日)19:10 ID:??? AAS
collationをcase sensitiveにすればいい
https://dev.mysql.com/doc/refman/8.0/en/charset-collation-implementations.html
75: 2022/06/05(日)19:11 ID:??? AAS
プライマリキーを設定するかどうかはcollationとは別の問題
76
(1): 2022/06/07(火)07:52 ID:uPHVsKsW(1) AAS
レコード追加する際に、連番のカラムを最大値+1にしたいです。

諸事情で、
・その連番のカラムはAUTO_INCREMENTではない
・プライマリキーでもなければUNIQUEですらない
・テーブル定義は変更してはいけない
という状況で、
重複させないのが要件です。

INSERT INTO unko (renban) SELECT MAX(renban)+1 FROM unko;
として1つのSQLで実行すれば、重複のリスクは回避できるでしょうか?

それとも、トランザクションでテーブル排他ロックからしなきゃだめでしょうか?
77: 2022/06/07(火)14:36 ID:BXjU4H6U(1) AAS
SQLについて質問なのですが

select USERID,USERNAME from USER_GRADE
where
STATUS in (select STATUS from USER_GRADE where GRADE ='Platinum' group by STATUS)
and
GRADE <> 'Platinum'

これをSQL初心者にもわかる簡単な書式に直して同じ結果を出したいのですがわかる方いますでしょうか
78: 2022/06/07(火)18:02 ID:??? AAS
>>76
トランザクションによる排他制御は必須
それが暗黙的に実行されるか明示的に指定するかの違いがあるだけ
そのケースは分離レベルをserializableにする必要がある

同じSQLステートメントでしか競合しないなら
片方のトランザクションをコミット直前でsleepさせておいて
もう片方のトランザクションをsleepさせずに実行した結果を確認してみるといい
79: 2022/06/08(水)16:08 ID:??? AAS
すみません、ちょっと筋違いな質問かもしれませんが、
あるソフトウェアはSQLを利用するのですが、それをインストールしようとすると、他のソフトウェアで使われているSQLと競合してインストールできません。
他のソフトウェアはたくさんあるのですが、どれがSQLを使用しているものか調べる方法はありますでしょうか?
80: 2022/06/08(水)17:42 ID:??? AAS
節子、それMySQLやない、MsSQLや!
81: 2022/06/11(土)14:35 ID:??? AAS
mysqltunerで
skip-name-resolve=1
これの推奨が出てくるのは、いつもlocalhostと127.0.0.1の変換がパフォーマンスの低下になるからってこと?
ユーザ作る時localhostと手打ちで入力しているけど、
ローカルだけならホストの権限は127.0.0.1に揃えた方が良いと言うこと?
82: 2022/06/23(木)10:52 ID:JA6tz0/l(1) AAS
MYSQL8になって何が変わったんですか?
83: 2022/06/23(木)12:42 ID:??? AAS
いろいろ変わったんです
https://dev.mysql.com/doc/relnotes/mysql/8.0/en/
84: 2022/08/01(月)16:09 ID:zIyNNUAa(1) AAS
MYSQLで

CREATE OR REPLACE TABLEみたいなことってできませんか?

テーブルの作成、もしくはテーブル構成の更新したいのです
85: 2022/08/01(月)22:23 ID:??? AAS
IF-ELSE
86
(3): 2022/09/25(日)16:06 ID:??? AAS
検索方法で質問です
例えば「カツカレー」で検索すると
「カレー」のレコードを
「三色エビチリ」で検索すると
「エビチリ」のレコードを得たいのですがいい方法はありますでしょうか

テーブルの方は
カレー 情報…
エビチリ 情報…
オムライス 情報…
となってます
87: 2022/09/25(日)20:24 ID:DVn290av(1/2) AAS
>>86
それマスタテーブルの存在がわかってないだけだろ
88
(1): 2022/09/25(日)20:25 ID:DVn290av(2/2) AAS
>>86
集合演算子を知ってますか?
89
(1): 2022/09/26(月)01:13 ID:??? AAS
>>86
形態素解析の話?
それとも「カツカレー」という単語を「カレー」にマッピングするテーブルを作る話?
90
(2): 2022/09/26(月)08:08 ID:??? AAS
>>88
集合演算子で検索したけど
分からなかった
>>89
あ、いえ例えばカレーで検索してカツカレーを求めることはできますけど
正規表現とか使って逆はできないかな
という質問です
マッピングテーブルみたいなの作るしかないのかな
91
(1): 2022/09/26(月)16:12 ID:CFgRtkvv(1/4) AAS
>>90
カツカレーの情報が、エビチリ情報テーブルに存在しないデータの持ち方ならSELECT文をUNION ALLで並べればいいだけだろ。

セレクト 列名 カレー情報 where 列名 イコール カツカレー
 ユニオンALL
セレクト 列名 エビチリ情報 where 列名
イコール カツカレー

俺は答えを教えるのは本人にとってよくないと思っているから、本当は書きたない。

そもそもそのデータモデリングは自分で考えたのか?
92: 2022/09/26(月)16:15 ID:CFgRtkvv(2/4) AAS
UNIONなどの集合演算子は列名が揃ってないと使えないからな
93: 2022/09/26(月)17:20 ID:??? AAS
>>91
おまえどう考えても勘違いしてるぞ
上塗り重ねず自重しとけ
94: 2022/09/26(月)17:31 ID:??? AAS
カツカレーだとライスにはマッチしないんだな
95
(2): 2022/09/26(月)17:42 ID:??? AAS
>>90
選択肢はブルートフォース、n-gram、 形態素解析、マッピングテーブルくらいかな
どれを選ぶかは用途次第

ブルートフォースは「カツカレー」というキーワードとテーブルの列名を1件1件比較して
キーワード内の部分文字列が列名に合致するかどうかを判断していく
めちゃ遅くなるけどデータ量と要求速度によってはこれでいい場合もある

n-gramで例えば文字単位で3文字ずつのまとまり(trigram)に分解すれば
「カツカレー」は「カツカ」「ツカレ」「カレー」の3つになる
この3つのキーワードともとの単語でテーブルを検索して合致するものがあるかどうか見る

形態素解析はそれ用のライブラリ使って
省4
96
(1): 2022/09/26(月)18:45 ID:CFgRtkvv(3/4) AAS
動的に列名違いのSQLを組み立てるなんてありえない。
97
(1): 2022/09/26(月)19:18 ID:??? AAS
>>95 >>96
SQLで出来ないことが分かっただけでも収穫ですが
さらに解決のヒントをいただきありがとうございます

ブルートフォースって言うのですか
PHPで作ってますがロジックで判断するやり方はちらっと頭に浮かんだのですが
性能がめちゃ心配で脳内却下してました
n-gramはちょっと分かりませんでした
形態素は解析エンジンを信用しきれなくて…
というわけで力作業でマッピングテーブルを作るか
それかブルートフォースでやるか
省1
98: 2022/09/26(月)19:38 ID:CFgRtkvv(4/4) AAS
やはり自作自演か
99
(1): 2022/09/26(月)22:34 ID:??? AAS
>>97
SQLでというか>>95の選択肢はどれもストアドやUDF使えばDB側でできるよ
特にブルートフォースでやるならDB側でやったほうが性能的には断然いい
100: 2022/09/26(月)22:48 ID:??? AAS
設計の最初からやり直した方が速そう
101
(1): 2022/09/27(火)19:57 ID:??? AAS
>>99
ストアドとかUDFとか知らなかった
教えてくれてありがとう
102: 2022/09/27(火)21:49 ID:qnEHOR6B(1) AAS
>>101
MySQLのストアドプロシージャは最悪の仕様だから覚悟しとけ!
103: 2022/09/29(木)00:05 ID:??? AAS
しらんけどこういう回答でどうなん?
104: 2022/09/29(木)00:10 ID:??? AAS
フライとかが登録されたTestというテーブル作っておいて

whereの中に "エビフライ" ライク コンキャット( パーセントフライパーセント)
みたいな値をかく。このエビフライっていうところが検索文字列ね
これでフライがとれるだろ?こういうことじゃないの?
105: 2022/09/29(木)00:10 ID:??? AAS
なおSQLで書こうとするとはじかれて書き込めなかった
わかりにくいがすまん
106: 2022/09/29(木)00:11 ID:??? AAS
考え方の質問なので、SQLで回答するのは難しい
107: 2022/09/29(木)00:13 ID:??? AAS
後半のパーセントで囲まれてるフライっていう文字列はテーブルのカラム名がそこにくる
108: 2022/09/29(木)00:23 ID:??? AAS
それに沿った書き方すれば、'エビフライ'という文字列が与えられていて
項目中に'エビフライ'の部分文字列にマッチするレコードを見つけるという問題
'エビフライ'のどこで区切るかは指定されていない
字句解析を行うか、ブルートフォースで行うか、だろうか
ストアドでやるとすれば、各レコードの項目文字列が'エビフライ'という文字列に
部分マッチングするか検査する感じかな
109: 2022/09/29(木)00:57 ID:??? AAS
104の方法がブルートフォースだよね
110
(1): 2023/01/30(月)21:25 ID:OB/pjXRI(1) AAS
ソースレビューにてDISTINCTは性能劣化するのでGROUP BYに変更しろと言われましたがDISTINCTよりGROUP BYのほうが性能あがるんですか?初心者ですみません。
111: 2023/01/30(月)22:21 ID:??? AAS
>>110
DISTINCTのほうが速いこともあればGROUP BYのほうが速いこともある
状況によるので実際のデータとクエリで実行計画の差と所要時間を計測して
112: 2023/02/01(水)00:16 ID:p28Z13TI(1) AAS
existsのほうが性能が高い可能性ありますか?3パターンを実測し1番性能が良いのを採用します。
113: 2023/02/19(日)12:11 ID:??? AAS
mysqldumpでエクスポートしたらインサート文のテーブル名がすべて空なんだけど原因わかる方教えてください。

mysqlのバージョン
Ver 8.0.32 for Linux on x86_64

コマンド
mysqldump -u {user} -p -h {host} --no-create-info --skip-extended-insert {dbname} {tablename} > export.sql

エクスポート結果
insert into `` (aaa ,bbb, ccc);
insert into `` (aaa ,bbb, ccc);
insert into `` (aaa ,bbb, ccc);
114
(1): 2023/02/27(月)10:28 ID:X/A+oHTH(1) AAS
https://qiita.com/masayoshi0327/items/19938d1a40023a5ba159

上の真似して
select
case
when name is null or name = '' then 'name'
else name
end as name
case
when idis null or id= '' then 'id'
else id
省8
115: 2023/02/27(月)16:04 ID:??? AAS
>>114
then ‘name’とかthen ‘id’としてるからだろ
116: 2023/03/05(日)15:24 ID:??? AAS
スクリプト書くのもめんどくさいから表計算ソフトでやってしまう。
117: 2023/03/20(月)13:32 ID:6b0WpT0J(1) AAS
【2月13日】 原発上空にUFO? 【震度6強】
2chスレ:atom
sssp://o.5ch.net/20q2y.png
118: 2023/04/07(金)07:38 ID:??? AAS
調べてみますね・・
119: 2023/04/07(金)13:35 ID:??? AAS
case1とかじゃなくてもいいの?
120: 2023/06/13(火)11:54 ID:/UXsc9Sn(1/2) AAS
kuni toshi
--------
日本 東京
日本 大阪
米国 ロス
米国 シカゴ
中国 北京
中国 上海

 ↓

kuni toshi
省7
121
(1): 2023/06/13(火)14:17 ID:??? AAS
GROUP_CONCATで
122: 2023/06/13(火)15:55 ID:/UXsc9Sn(2/2) AAS
>>121

ありがとうございます!

いままで2回にわけてSQL文をつくって無理やりやっていましたが、スマートにできそうです!
123: ってことだよ 2023/07/25(火)10:50 ID:OsyChIkV(1) AAS
ってことだよってことだよってことだよ
124: 2023/08/25(金)02:11 ID:UQngHRKx(1/2) AAS
WHERE IN で入力した順番になりません

SELECT
id,name
FROM table
WHERE id IN (3,2,1)

を流すと
1,2,3に並び替えられてしまいます

入力順のままにする方法はありますでしょうか?
125: 2023/08/25(金)02:14 ID:??? AAS
3、2、1の順にしたい場合は、その順にソートするしかない
126: 2023/08/25(金)02:19 ID:UQngHRKx(2/2) AAS
すいません! order by でできるのでしょうか?
127: 2023/08/25(金)02:36 ID:??? AAS
入力した順番が判らないと、その通りにはならない
DBへの格納順は指定できない
3,2,1の順が単に大きい順ということなら、order by desc で良い
128: 2023/08/25(金)02:48 ID:??? AAS
入力順が、例えば2,1,3だったとしよう
その順に出力したいなら、
select * from table order by field (id , 2,1,3);

この場合も、入力順が 2,1,3 であると言う情報が必要
129: [sage ] 2023/08/26(土)13:57 ID:??? AAS
ORDER BY無しでINSERTされた順に出力される保証なんて無いのでは
130: 2023/08/26(土)17:16 ID:??? AAS
INSERTされた順の話なんて誰もしてないやろ
131: 2023/08/26(土)18:01 ID:??? AAS
>入力順のままにする方法はありますでしょうか?

これをどううけとるか、だな
132: 2023/08/26(土)20:22 ID:ihJR3/H9(1) AAS
ネタに反応すんな!
133: 2023/09/28(木)04:10 ID:??? AAS
ホントに、そんな風になるんやなぁ
134: 2023/09/28(木)12:32 ID:??? AAS
あかん、道が混んでてまったく進まん
135: 2023/10/24(火)13:07 ID:HJ1D8OfA(1) AAS
SELECT * FROM users;で特定のカラムだけ抽出したくないとかできませんかね?

created_atだけ抽出したくないとか
136: 2023/10/24(火)18:45 ID:??? AAS
MySQLにそういう機能はないので無理
137: 2023/10/24(火)20:15 ID:??? AAS
*で無く、必要なカラムを指定すれば良いだろう
138: 2023/11/16(木)16:41 ID:q/IEcbuv(1) AAS
> 彼らはよく、社会に貢献したいと口にする。
> なんでも社会悪のネトウヨを自殺に追い込むことが、社会に貢献することなんだそうで。
> イジメや嫌がらせで社会に貢献できる教師や警官になるために、あえて帰化したんであって、祖国同胞を裏切ったわけではなく、心は●●人なんだそうだ。
> 
> 昔は帰化すると裏切り者と呼ばれたりしたが、祖国に国籍を残したまま帰化する方法が確立された現在では、社会に貢献するためにむしろ帰化することが推奨されている。
> 拳銃所持で前科のある生粋の反日家ですら、今では普通に帰化している。
> 
> ●●学会などはネトウヨ認定した日本人を盗撮して、痴漢の写真だと言ってばらまいている。
> それらの写真は、集団ストーカーに使用される。
> 彼らは集団ストーカーを、[地域で子供を守る安心安全パトロール]と称している。
139
(1): 2023/11/16(木)16:56 ID:??? AAS
なんの脈絡もなく突然こういうこと言い出す人いたら怖い
140: 2023/11/16(木)21:14 ID:Hd0dmE6L(1) AAS
>>139
昔の2ちゃんねるのデマだよ

こういう事実と異なる話で、創価学会員が全員、在日コリアンとかありえない話を信じ込む人間が一定数いる。
141: 2023/11/17(金)03:26 ID:gYoaa3QG(1) AAS
https://xn--2ch-5q0fn79k.net/

お前ら2ちゃんねらーって最悪だな
142: 2023/11/17(金)19:17 ID:??? AAS
2chスレ:db

こっちでやれ
143: 2023/11/17(金)21:23 ID:5nZ/i4UM(1) AAS
こういうのが好きそう
https://youtu.be/Ci_zad39Uhw?si=oADF6_fQYm5UB8Vl
144: 2023/12/03(日)23:55 ID:??? AAS
test
145
(1): 02/19(月)17:24 ID:mGghvuzC(1) AAS
SELECT文の作成に困っています

下記のような2つのカラムを同一のものとして集計するヒントを頂けないしょうか?

【アンケートテーブル】
氏名 希望A 希望B
----------------------
Aさん 札幌 仙台
Bさん 大阪 福岡
Cさん 札幌 大阪
Dさん 福岡 札幌

 ↓
省6
146
(1): 02/19(月)17:48 ID:??? AAS
UNION使うとか
147: 145 02/19(月)18:52 ID:??? AAS
>>146

ありがとうございます

UNION で検索したら参考になりそうなサイトが沢山ヒットしました
148: 02/20(火)16:16 ID:Wd+q7mRj(1) AAS
UNION ALLだぞ
1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.519s*