探検
SQLなら俺に訊け [無断転載禁止]©2ch.net
1デフォルトの名無しさん
2017/07/14(金) 07:40:53.63ID:HFjsarQi さあ
2018/09/16(日) 00:44:59.12ID:LDoJnfCQ
>>56
それな、まずは糞なテーブルを捨てろ
それな、まずは糞なテーブルを捨てろ
2018/09/22(土) 16:25:45.44ID:/Du2bEHB
DBの検索速度ってPC上ではかなり遅いみたいですけど
大手Webサービスはどこも一瞬で結果を返してくれますよね
あれは単にサーバーのスペックが凄いから早いんですか?
大手Webサービスはどこも一瞬で結果を返してくれますよね
あれは単にサーバーのスペックが凄いから早いんですか?
61デフォルトの名無しさん
2018/09/22(土) 20:22:55.42ID:U3p59MUv2018/10/23(火) 15:14:05.50ID:IWYLnZUh
初心者です。もしよろしかったら質問させてください。
CASE文
SELECT TAB1,TAB2,
CASE
WHEN TAB2<1000 THEN 'SMALL'
WHEN TAB2>1000 THEN 'BIG'
ELSE 'ERR'
END AS SIZE
FROM TABLE
WHERE TAB2>0
というコードなのですが、TAB1のように、CASE文で使用しないカラムをSELECTするのは何故なのでしょう?
CASE文
SELECT TAB1,TAB2,
CASE
WHEN TAB2<1000 THEN 'SMALL'
WHEN TAB2>1000 THEN 'BIG'
ELSE 'ERR'
END AS SIZE
FROM TABLE
WHERE TAB2>0
というコードなのですが、TAB1のように、CASE文で使用しないカラムをSELECTするのは何故なのでしょう?
63デフォルトの名無しさん
2018/10/23(火) 23:04:42.87ID:+Sb0MP+K TAB1の値がほしいから
いらないなら書く必要すらない
いらないなら書く必要すらない
2018/10/23(火) 23:05:20.44ID:QS1DBBVT
欲しかったからだろ。
2018/10/24(水) 13:40:18.23ID:AfSv/oYJ
ありがとうございました。
すっきりしました。
SELECT文は新しテーブルを作るのではなくて
見やすいように表型に情報を表示してるだけなのですね
すっきりしました。
SELECT文は新しテーブルを作るのではなくて
見やすいように表型に情報を表示してるだけなのですね
66デフォルトの名無しさん
2018/10/24(水) 22:54:40.93ID:WtQFT3Lb いや概念的には表を作ってる
表から表を作ってる
そういった理解がないとSQLは理解できない
その表からまた別の表を作るのにも利用できる
表から表を作ってる
そういった理解がないとSQLは理解できない
その表からまた別の表を作るのにも利用できる
2018/10/25(木) 09:40:40.88ID:jGXKkZ/C
ありがとうございます!
68デフォルトの名無しさん
2018/11/03(土) 11:37:09.06ID:3nMVWrto テーブル名:RUN_TIME
KEY | COL | DEF_TIME | UPD_FLG
AAA | BBB | 2017-01-01 08:54:21 | NULL
AAA | CCC | 2017-01-01 08:58:31 | NULL
AAA | DDD | 2017-01-01 09:04:25 | NULL
CCC | XXX | 2017-01-02 08:57:46 | NULL
CCC | ZZZ | 2017-01-02 08:59:26 | NULL
CCC | BBB | 2017-01-02 09:05:03 | NULL
…
というデータが毎日朝9時付近何件かあって、
その日の08:58:00〜09:02:00の間に含まれるレコードのUPD_FLGに'Y'を入れたいのですが
どういうUpdate文を書けば良いんでしょうか
update RUN_TIME set UPD_FLG='Y'
where DEF_TIME >= ??? and DEF_TIME <= ????
というようなSQLになるんだと思うのですが…。
KEY | COL | DEF_TIME | UPD_FLG
AAA | BBB | 2017-01-01 08:54:21 | NULL
AAA | CCC | 2017-01-01 08:58:31 | NULL
AAA | DDD | 2017-01-01 09:04:25 | NULL
CCC | XXX | 2017-01-02 08:57:46 | NULL
CCC | ZZZ | 2017-01-02 08:59:26 | NULL
CCC | BBB | 2017-01-02 09:05:03 | NULL
…
というデータが毎日朝9時付近何件かあって、
その日の08:58:00〜09:02:00の間に含まれるレコードのUPD_FLGに'Y'を入れたいのですが
どういうUpdate文を書けば良いんでしょうか
update RUN_TIME set UPD_FLG='Y'
where DEF_TIME >= ??? and DEF_TIME <= ????
というようなSQLになるんだと思うのですが…。
2018/11/03(土) 11:52:19.27ID:3nMVWrto
調べたところ、
where DEF_TIME >= DATE_ADD(DATE(DEF_TIME),INTERVAL 538 MINUTE) and
DEF_TIME <= DATE_ADD(DATE(DEF_TIME),INTERVAL 542 MINUTE);
で行けたのですが、これって一般的なやり方でしょうか?
where DEF_TIME >= DATE_ADD(DATE(DEF_TIME),INTERVAL 538 MINUTE) and
DEF_TIME <= DATE_ADD(DATE(DEF_TIME),INTERVAL 542 MINUTE);
で行けたのですが、これって一般的なやり方でしょうか?
70デフォルトの名無しさん
2018/11/03(土) 15:38:32.68ID:rSl2Ac3O オレなら普通に DEF_TIME を時分秒の文字列に変換してから比較する
時分固定でその日に該当する年月日時分をいちいち組み立てようとは思わない
時分固定でその日に該当する年月日時分をいちいち組み立てようとは思わない
2018/11/04(日) 13:01:05.98ID:mRQV89co
日付まわりはDBによって違いがあるからなんとも言えんが、こんな可読性も実行効率も悪いSQL書いてたら説教ものだな
72デフォルトの名無しさん
2018/11/11(日) 14:35:31.84ID:vUUak6BF73デフォルトの名無しさん
2018/11/27(火) 18:25:45.02ID:2K5MWtLk 他人が書いたSQLでこんなのや
select T1.*
from T1 left outer join ON T1.aaa = T2.aaa
こんなのがあるんだけど
select X2.*
from X1 left outer join ON X1.aaa = X2.aaa
外部結合してるのに片方のテーブルのフィールドしか抽出してない
SQLが散見してるんだけどこれって全く外部結合する意味ないよな
意味不明すぎてイラッとしてきた
select T1.*
from T1 left outer join ON T1.aaa = T2.aaa
こんなのがあるんだけど
select X2.*
from X1 left outer join ON X1.aaa = X2.aaa
外部結合してるのに片方のテーブルのフィールドしか抽出してない
SQLが散見してるんだけどこれって全く外部結合する意味ないよな
意味不明すぎてイラッとしてきた
2018/11/27(火) 18:43:21.08ID:DSo9/Qg/
T1.aaa = T2.aaa
これは、両方の表にあるものだけを取り出す。
片方の表だけにあるものは取り出さない
これは、両方の表にあるものだけを取り出す。
片方の表だけにあるものは取り出さない
2018/11/27(火) 18:47:04.05ID:2K5MWtLk
言いたいこともわからんのかw
過疎だしここもレベル低すぎてダメだな
過疎だしここもレベル低すぎてダメだな
2018/11/27(火) 19:41:43.98ID:dtVd+WAB
意味無いことはないけど、多分意図してることじゃないよ
2018/11/27(火) 19:47:50.54ID:PufIRrup
ID:2K5MWtLk
小さいことにイライラしてるわいきなりキレだすわ気持ち悪っw
小さいことにイライラしてるわいきなりキレだすわ気持ち悪っw
2018/11/27(火) 20:13:38.58ID:2K5MWtLk
0.01_もキレてないけどね
このスレは初めて見て初めて書き込んだけど
こっちの言いたいことも理解できないパープリンしかいないうえに
二言目が人格攻撃とかレベル低すぎて俺にはもう無理だわw
低能
このスレは初めて見て初めて書き込んだけど
こっちの言いたいことも理解できないパープリンしかいないうえに
二言目が人格攻撃とかレベル低すぎて俺にはもう無理だわw
低能
2018/11/27(火) 20:41:37.76ID:JHhXTC3j
joinしてるテーブルとか書いてないし、ちゃんとSQL全部見て言ってるのかあやしいな
抽出してなくてもwhereとかで使ってれば意味はあるぞ
抽出してなくてもwhereとかで使ってれば意味はあるぞ
2018/11/27(火) 20:44:19.89ID:ysmS7zNS
左外部結合だからT1のレコードは全部取り出される。
で、T1にあるフィールドしか取り出さないからT1そのものと一緒だな。
単に間違いか、以前はT2のフィールドも取り出してたけど編集を繰り返してる内にT2のフィールドが要らなくなってしかもT1そのもので良いことに気付いて無いとかかな。
で、T1にあるフィールドしか取り出さないからT1そのものと一緒だな。
単に間違いか、以前はT2のフィールドも取り出してたけど編集を繰り返してる内にT2のフィールドが要らなくなってしかもT1そのもので良いことに気付いて無いとかかな。
2018/11/27(火) 21:08:12.03ID:dtVd+WAB
一緒にはならないよ。T2のaaaが複数あるならそれだけ同じものが出てくるよ。
2018/11/27(火) 21:30:18.04ID:ysmS7zNS
2018/11/27(火) 21:31:25.10ID:ysmS7zNS
ああ、レコードのことね。
でもそんなことする意味有る?
でもそんなことする意味有る?
84デフォルトの名無しさん
2018/11/27(火) 21:44:13.52ID:7ygBETe/ データパターンでわざと増幅させたい場合はありだな
意味がないならきちんとテストして取り除けばいいだけじゃん
意味がないならきちんとテストして取り除けばいいだけじゃん
2018/11/27(火) 21:50:57.15ID:dtVd+WAB
2018/12/11(火) 22:34:22.95ID:0Fe3pinh
抽象化の機能が殆どなくて、クエリのいたるところににコピペが必要な部分が出てきて、アセンブリのような扱いになっているSQLに、未来はあるのでしょうか?
仕事で他人の書いたSQLが読み解けなくて、達人に学ぶ SQL徹底指南書を読んでいるんだけど、
「豪快に GROUP BY句にも SELECT句の CASE式をコピーしてやるのがポイントです」とか身の毛もよだつ文章で既に萎えつつあります
仕事で他人の書いたSQLが読み解けなくて、達人に学ぶ SQL徹底指南書を読んでいるんだけど、
「豪快に GROUP BY句にも SELECT句の CASE式をコピーしてやるのがポイントです」とか身の毛もよだつ文章で既に萎えつつあります
2018/12/11(火) 23:14:47.15ID:j8P28cRB
>>86
SQL専門家ではなく、プログラマだが。
SQL自体は残ると思うよ。DB弄るのにはあれくらいがいい。
そもそもSQLを「手で打つ」事はあり得ないでしょ。普通はプログラミング言語経由だ。
だから抽象化したければプログラミング言語で出来るし、それで十分だ。
SQL自体に抽象化を持ち込むのは、俺は反対だね。
それはSQLでプログラミングすることに繋がっていくが、
現時点ですでにDB側にロジックを持ち込むのはろくな事にならない、ってことになってるだろ。
ある意味、プログラミング言語はロジックを記述する為に出来ているわけで、当然の話だが。
(ロジックを記述するならSQLよりプログラミング言語の方が断然いい)
それ以前に、そもそも、SQLを手で書く事がなくなりつつあるだろ。
物によってはクエリデザイナもあるし、フレームワーク等を導入した場合、隠蔽されたりする。
この意味で、SQL自体を学ぶ必要があるかは、微妙になりつつあるが。
とはいえ、
> 仕事で他人の書いたSQLが読み解けなくて
なら、リファクタするにしても読み解けるようになるまでは学ぶしかないが。
SQL自体が原始的なのは文句を言ってもしょうがないだろ。
事実として規格は古いし、DB向けのアセンブラなんだし。
SQL専門家ではなく、プログラマだが。
SQL自体は残ると思うよ。DB弄るのにはあれくらいがいい。
そもそもSQLを「手で打つ」事はあり得ないでしょ。普通はプログラミング言語経由だ。
だから抽象化したければプログラミング言語で出来るし、それで十分だ。
SQL自体に抽象化を持ち込むのは、俺は反対だね。
それはSQLでプログラミングすることに繋がっていくが、
現時点ですでにDB側にロジックを持ち込むのはろくな事にならない、ってことになってるだろ。
ある意味、プログラミング言語はロジックを記述する為に出来ているわけで、当然の話だが。
(ロジックを記述するならSQLよりプログラミング言語の方が断然いい)
それ以前に、そもそも、SQLを手で書く事がなくなりつつあるだろ。
物によってはクエリデザイナもあるし、フレームワーク等を導入した場合、隠蔽されたりする。
この意味で、SQL自体を学ぶ必要があるかは、微妙になりつつあるが。
とはいえ、
> 仕事で他人の書いたSQLが読み解けなくて
なら、リファクタするにしても読み解けるようになるまでは学ぶしかないが。
SQL自体が原始的なのは文句を言ってもしょうがないだろ。
事実として規格は古いし、DB向けのアセンブラなんだし。
2019/01/04(金) 14:11:21.43ID:HolJeFBP
ORM求める輩って何なんだろうなSQL書けよ
2019/01/04(金) 16:56:58.28ID:t+y7QrAc
ミクロサービスだとSQL要らんのよね
なのでormで楽したい
なのでormで楽したい
2019/01/04(金) 19:23:43.78ID:aVQoc2JA
>>88
インピーダンスミスマッチでググれ
インピーダンスミスマッチでググれ
2019/01/22(火) 06:30:06.30ID:PjxX9ixQ
CASE文のみで2番目に高い値を取得する方法はありますか?
groupbyなどは使えない制約下とさせてください。
groupbyなどは使えない制約下とさせてください。
2019/01/22(火) 08:19:37.13ID:QMgfUI4D
group by使わないならnot exists
2019/01/22(火) 16:01:09.95ID:vFYQiqmx
Order by 〇〇 Limit 2で1番目捨てる
2019/02/16(土) 23:27:10.19ID:CD9VXZwW
SOQLってどうですか?
自由にJOIN出来ないってどうなのよって思うんですが。
自由にJOIN出来ないってどうなのよって思うんですが。
2019/04/14(日) 21:36:53.40ID:KKPn+v5/
SQLとMySQLの違いというか、関係ってどういう関係ですか?
MySQLがSQLの拡張?
MySQLがSQLの拡張?
96デフォルトの名無しさん
2019/04/14(日) 21:53:01.78ID:IovzG98E C言語とgccの関係
2019/04/14(日) 21:59:03.38ID:KKPn+v5/
文法とそれを実行する処理系統?みたいなことですか
98デフォルトの名無しさん
2019/04/14(日) 23:36:59.84ID:NCCiDrpj SQLは言語
MySQLは製品名、SQLでデータ操作ができる
MySQLは製品名、SQLでデータ操作ができる
2019/05/17(金) 10:15:36.61ID:nnDIZl0o
PythonでSQLiteのデータを更新中にコミットしないままプログラムが強制終了してしまった事があって
DBファイルが開けなくなったことがあったんですけど(それはバックアップを使って復帰させたんですけど)
もしバックアップを取ってなかった場合、どうやって復帰させればいいんでしょうか
-journalというファイルが残っているのでこれを使うのは予想できるのですが…
DBファイルが開けなくなったことがあったんですけど(それはバックアップを使って復帰させたんですけど)
もしバックアップを取ってなかった場合、どうやって復帰させればいいんでしょうか
-journalというファイルが残っているのでこれを使うのは予想できるのですが…
100デフォルトの名無しさん
2019/07/11(木) 08:12:00.70ID:4eXCjsM2 Webの情報をSQLiteに書き込む処理は概ね慣れてきたんですけど
書き込んだ情報を見やすく表示したり、表示中の情報をクリックして関連項目を検索したり、
データを手動で書き換えたりするには
phpとhtmlを勉強して1からDB表示・操作システムを作るしかないんでしょうか?
書き込んだ情報を見やすく表示したり、表示中の情報をクリックして関連項目を検索したり、
データを手動で書き換えたりするには
phpとhtmlを勉強して1からDB表示・操作システムを作るしかないんでしょうか?
101デフォルトの名無しさん
2019/09/06(金) 01:19:58.95ID:vAzRz7Qo VScodeでMYSQL使いたいのですが、サーバ名がわかりません。
どなたか教えてください。
どなたか教えてください。
102デフォルトの名無しさん
2019/12/03(火) 08:25:14.69ID:OVxjKMFy SQL初心者向けの書籍は何をまず読めばいいでしょうか?
103デフォルトの名無しさん
2019/12/04(水) 02:33:43.32ID:qrz+g/1U104デフォルトの名無しさん
2019/12/04(水) 05:09:58.36ID:yxtCj8pw >>103
イラストで理解 SQLはじめて入門
朝井淳さん
スッキリわかるSQL入門第2版
中山清喬さん、飯田理恵子さん、フレアリンク監修
の2冊買ってきました。
谷尻さんとミックさんの本、後ほど確認してみたいと思います。
イラストで理解 SQLはじめて入門
朝井淳さん
スッキリわかるSQL入門第2版
中山清喬さん、飯田理恵子さん、フレアリンク監修
の2冊買ってきました。
谷尻さんとミックさんの本、後ほど確認してみたいと思います。
105デフォルトの名無しさん
2019/12/04(水) 19:50:18.74ID:teYzVY+x SQLは大学で習ったが、その時はどんな用途で使うのかさっぱりわからんかったわ。
106デフォルトの名無しさん
2019/12/07(土) 16:20:20.48ID:y8T8hHHg SQL徹底指南第2版誰かmercariで安くで出品してよー
107デフォルトの名無しさん
2020/12/17(木) 13:35:51.43ID:rhbff53i MySQLで時間を管理し、一定時間過ぎたら、
レコードをの情報を更新したいのですが、
どの様にすればできるか教えてください。
1. このようなことがMySQL単体で可能なことなのかな?
2. 可能な場合どのようにすれば実現できるの?
イメージとしてはこんな感じです。
開始時のレコード001
ID, 開始 , 終了
001, 13:00 , 13:30 ← 13:00に開始
↓ 30分経過後(同一レコードの動き(自動更新))
終了時のレコード001
ID, 開始 , 終了
001, 0 , 0 ← 13:30になったからクリア
レコードをの情報を更新したいのですが、
どの様にすればできるか教えてください。
1. このようなことがMySQL単体で可能なことなのかな?
2. 可能な場合どのようにすれば実現できるの?
イメージとしてはこんな感じです。
開始時のレコード001
ID, 開始 , 終了
001, 13:00 , 13:30 ← 13:00に開始
↓ 30分経過後(同一レコードの動き(自動更新))
終了時のレコード001
ID, 開始 , 終了
001, 0 , 0 ← 13:30になったからクリア
108デフォルトの名無しさん
2020/12/17(木) 15:15:58.94ID:hWtMYtoG >>107
定期的にスケジュールテーブルをチェックするイベント作ればできるよ
あと開始/終了時刻をクリアするよりもステータスを別のカラムに持たせたほうがいい
https://dev.mysql.com/doc/refman/8.0/en/create-event.html
リファレンス読んで分からないことがあればここじゃなくMySQLスレへどうぞ
https://mevius.5ch.net/test/read.cgi/db/1499949595/
定期的にスケジュールテーブルをチェックするイベント作ればできるよ
あと開始/終了時刻をクリアするよりもステータスを別のカラムに持たせたほうがいい
https://dev.mysql.com/doc/refman/8.0/en/create-event.html
リファレンス読んで分からないことがあればここじゃなくMySQLスレへどうぞ
https://mevius.5ch.net/test/read.cgi/db/1499949595/
109デフォルトの名無しさん
2020/12/17(木) 15:26:22.80ID:rhbff53i >>108
ありがとうございます。
定期的にチェックするイベントですね。
試してみます。
今後はMySQLで聞きます。
https://mevius.5ch.net/test/read.cgi/db/1499949595/
(^人^)ありがとうございます。
ありがとうございます。
定期的にチェックするイベントですね。
試してみます。
今後はMySQLで聞きます。
https://mevius.5ch.net/test/read.cgi/db/1499949595/
(^人^)ありがとうございます。
110デフォルトの名無しさん
2021/01/18(月) 10:34:21.91ID:+C2vxlND XreaやSAKURAなどのMySQLは、ネットからデータを閲覧したりダウンロード
できるようになっているんだけど、あのコントロールはどのCGIでやってる?
WindowsマシンにMySQLをインストールした場合、同様にデータベースの
中身を見るのはどうしたらいい?
できるようになっているんだけど、あのコントロールはどのCGIでやってる?
WindowsマシンにMySQLをインストールした場合、同様にデータベースの
中身を見るのはどうしたらいい?
111デフォルトの名無しさん
2021/01/18(月) 11:57:48.25ID:JT9EgKXH たいていのアプリ・サービスは、サーバー/クライアント方式
Linux のシステム内で動いているものは、サーバーで、
それに、Windows などのパソコンからアクセスするものは、クライアント
例えば、AWS なら、AWS Command Line Interface(AWS CLI)みたいなものを、
Windows パソコンに入れて、それでサーバーにアクセスする
MySQL 用のクライアントも探してみれば?
Linux のシステム内で動いているものは、サーバーで、
それに、Windows などのパソコンからアクセスするものは、クライアント
例えば、AWS なら、AWS Command Line Interface(AWS CLI)みたいなものを、
Windows パソコンに入れて、それでサーバーにアクセスする
MySQL 用のクライアントも探してみれば?
112デフォルトの名無しさん
2021/01/18(月) 13:17:29.49ID:+C2vxlND >>111
うーんと、Xreaなどのレンタルサーバーを借りると予めMySQLがインストール
されていて、確か、管理画面などからMySQLのデータベースの中に入っている
データを、普通のパソコンのブラウザからリモートで見られるようになっている。
それは、なんという名前のCGIを使っているか教えて欲しい。
うーんと、Xreaなどのレンタルサーバーを借りると予めMySQLがインストール
されていて、確か、管理画面などからMySQLのデータベースの中に入っている
データを、普通のパソコンのブラウザからリモートで見られるようになっている。
それは、なんという名前のCGIを使っているか教えて欲しい。
113111
2021/01/18(月) 13:48:11.67ID:JT9EgKXH 例えば、AWS なら、AWS Command Line Interface(AWS CLI)みたいなものを、
自分のWindows パソコンに入れて、それでサーバーにアクセスする
たぶん、Xrea, SAKURA でも、
Xrea CLI, SAKURA CLI みたいな同様のツールがあるのじゃないの?
そのサービス事業者に聞いてみれば?
自分のWindows パソコンに入れて、それでサーバーにアクセスする
たぶん、Xrea, SAKURA でも、
Xrea CLI, SAKURA CLI みたいな同様のツールがあるのじゃないの?
そのサービス事業者に聞いてみれば?
114デフォルトの名無しさん
2021/01/18(月) 19:38:01.83ID:OUq490Pl >>112
phpMyAdminとかそういう話?
phpMyAdminとかそういう話?
115デフォルトの名無しさん
2021/01/19(火) 00:28:07.43ID:hiZmhE+d116デフォルトの名無しさん
2021/01/19(火) 00:45:19.71ID:sryyIgAN117デフォルトの名無しさん
2021/01/19(火) 00:47:54.79ID:hiZmhE+d Ruby on Rails の devise という「gem」が、パスワードを入力したり
メールを送って登録するようなよくある認証パターンをやってくれて、
MySQLも使ってるそうだけど、Ruby on Rails使ったことないし、
登録した MySQL のデータを上手く扱えるか不安。
メールを送って登録するようなよくある認証パターンをやってくれて、
MySQLも使ってるそうだけど、Ruby on Rails使ったことないし、
登録した MySQL のデータを上手く扱えるか不安。
118デフォルトの名無しさん
2021/02/08(月) 13:32:01.05ID:0mrKmB9v テーブル名にバインド変数使う事って出来ないの?
"CREATE TABLE IF NOT EXISTS ? (...);"
といった感じでテーブル名は後付けでバインドしたいんだけどsqlite3_prepare_v2が失敗する
"CREATE TABLE IF NOT EXISTS ? (...);"
といった感じでテーブル名は後付けでバインドしたいんだけどsqlite3_prepare_v2が失敗する
119デフォルトの名無しさん
2021/02/08(月) 14:34:00.76ID:0mrKmB9v 自己解決、
出来ないのが仕様だったか
出来ないのが仕様だったか
120デフォルトの名無しさん
2021/02/08(月) 16:39:30.22ID:KTkq0eI8 SQL ServerとOracleとDb2の3間を変換してくれるアプリとかありませんか?
121デフォルトの名無しさん
2021/02/09(火) 22:59:40.19ID:62IhLHy8 質問スレ過疎ってたからこっちか
専ブラBB2Cでワッチョイを正規表現でNGしたいんだけどうまくいかない
第2オクテット(仮にXXとして)だけ固定でこれじゃダメだろうか
.*XX-.*
専ブラBB2Cでワッチョイを正規表現でNGしたいんだけどうまくいかない
第2オクテット(仮にXXとして)だけ固定でこれじゃダメだろうか
.*XX-.*
122デフォルトの名無しさん
2021/02/10(水) 14:33:47.60ID:n+lQ6bEt sqlite3_blob_openで得た列ハンドルをsqlite3_reopen_blobで使いまわすとクエリ投げるより5倍近く高速だと判明したが
nullセルやrowが見つからないとハンドル失効しちゃってopenし直さないといけないんだな
open自体はそれなりに重いから失効が多いとパフォーマンス上の利点はほとんど無しか
nullセルやrowが見つからないとハンドル失効しちゃってopenし直さないといけないんだな
open自体はそれなりに重いから失効が多いとパフォーマンス上の利点はほとんど無しか
123デフォルトの名無しさん
2021/02/13(土) 18:50:09.35ID:k+FkZinH データベース板を忘れないでください
124デフォルトの名無しさん
2021/05/21(金) 10:11:21.48ID:bGYKMPx3 2万レコードのテーブルの全行をそれぞれupdateで値を変更したいんだが、これってforでSELECTを2万回繰り返したりしたらまずいもんなの?
レンタルサーバー使ってるんだが
レンタルサーバー使ってるんだが
125デフォルトの名無しさん
2021/05/21(金) 22:03:11.74ID:zqtp1sUR べつにまずくはないよ。オーバーヘッドが大きいだけ。
126デフォルトの名無しさん
2021/05/22(土) 21:16:11.45ID:GZBP0kYz >>125
ありがとうございます。めっちゃ助かりました
ありがとうございます。めっちゃ助かりました
127デフォルトの名無しさん
2021/07/10(土) 13:35:16.95ID:0S1tAkGn 一個前のidからカラム取ってくることはできますか?
128デフォルトの名無しさん
2021/07/10(土) 14:09:51.57ID:1/iYafxq 前とか後とかいう概念が、、、というのは置いといて
自分のidより小さいidの最大が該当のidだろ
あとはサブクエリなりwindow関数なりでとってこい
自分のidより小さいidの最大が該当のidだろ
あとはサブクエリなりwindow関数なりでとってこい
129デフォルトの名無しさん
2021/07/13(火) 23:04:11.03ID:oBbbWw6W 出来たわ!ありがとう
130デフォルトの名無しさん
2021/07/22(木) 23:59:45.26ID:zjMsrHKr SQLの述語というのがよくわかりません
131デフォルトの名無しさん
2021/10/15(金) 22:03:31.28ID:atwiHSUT レコードのデータが
AAA 1
AAA 2
BBB 3
BBB 4
BBB 5
CCC 6
CCC 7
AAA 8
AAA 9
BBB 10
BBB 11
ってなってるデータから
AAA 1
BBB 3
CCC 6
AAA 8
BBB 10
みたいなデータに変換したいのですがやる方法ってありますか
AAA 1
AAA 2
BBB 3
BBB 4
BBB 5
CCC 6
CCC 7
AAA 8
AAA 9
BBB 10
BBB 11
ってなってるデータから
AAA 1
BBB 3
CCC 6
AAA 8
BBB 10
みたいなデータに変換したいのですがやる方法ってありますか
132デフォルトの名無しさん
2021/10/15(金) 22:50:54.11ID:p2U7IjWk グループ化して、最小値だけを取り出せば?
133デフォルトの名無しさん
2021/10/16(土) 08:56:30.04ID:vbkw9O81 どういうルールで変換するのか書かないで丸投げされてもな。
というかそれを自分で考えないからわかんないんだろう。
というかそれを自分で考えないからわかんないんだろう。
134デフォルトの名無しさん
2021/10/16(土) 09:46:40.94ID:BnnoSLdm135デフォルトの名無しさん
2021/10/16(土) 11:27:24.16ID:wy7RR+Lb136デフォルトの名無しさん
2021/10/17(日) 10:18:00.58ID:O7pSNP76 すまん 俺が悪かった。
みんなありがとう
例えば、下記の時系列データがあったときに、nameごとにまとめたものを別のテーブルに入れたいんだよね。
nameがはまとめたときに、IDがもっとも若いものを格納したい。
SQLで一発取れたりするかな?
ロジックを考える必要ある?
ID(PK) name value
1 AAA 1
2 AAA 3
3 BBB 5
4 BBB 2
5 BBB 4
6 CCC 1
7 CCC 3
8 AAA 1
9 AAA 2
10 CCC 3
11 CCC 4
↓
ID(PK) name value
1 AAA 1
3 BBB 5
6 CCC 1
8 AAA 1
10 CCC 3
みんなありがとう
例えば、下記の時系列データがあったときに、nameごとにまとめたものを別のテーブルに入れたいんだよね。
nameがはまとめたときに、IDがもっとも若いものを格納したい。
SQLで一発取れたりするかな?
ロジックを考える必要ある?
ID(PK) name value
1 AAA 1
2 AAA 3
3 BBB 5
4 BBB 2
5 BBB 4
6 CCC 1
7 CCC 3
8 AAA 1
9 AAA 2
10 CCC 3
11 CCC 4
↓
ID(PK) name value
1 AAA 1
3 BBB 5
6 CCC 1
8 AAA 1
10 CCC 3
137デフォルトの名無しさん
2021/10/17(日) 10:20:12.93ID:O7pSNP76138デフォルトの名無しさん
2021/10/23(土) 10:22:47.90ID:D86LbS/L 時刻昇順に並んでるデータでstatusが1〜4を一塊として
縦横変換したテーブルが欲しいんですけどSQLだけじゃムリですかね。
欲しいテーブルにあるrep_idは元のテーブルにない(生成したい)です。
元のテーブル
time status
10/1 0:01 1
10/1 1:34 2
10/1 2:00 4
10/1 22:00 2
10/1 23:32 3
10/2 1:02 4
欲しいテーブル
rep_id| status_1 | status_2 | status_3 | status_4
-----+----------+-----------+----------+--------
1 |10/1 0:01 | 10/1 1:34 | null | 10/1 2:00
2 |null | 10/1 23:00 | 10/1 23:32 | 10/2 1:02
縦横変換したテーブルが欲しいんですけどSQLだけじゃムリですかね。
欲しいテーブルにあるrep_idは元のテーブルにない(生成したい)です。
元のテーブル
time status
10/1 0:01 1
10/1 1:34 2
10/1 2:00 4
10/1 22:00 2
10/1 23:32 3
10/2 1:02 4
欲しいテーブル
rep_id| status_1 | status_2 | status_3 | status_4
-----+----------+-----------+----------+--------
1 |10/1 0:01 | 10/1 1:34 | null | 10/1 2:00
2 |null | 10/1 23:00 | 10/1 23:32 | 10/2 1:02
139デフォルトの名無しさん
2021/10/23(土) 10:32:24.95ID:D86LbS/L 時刻昇順に並んでるデータでstatusが1〜4を一塊として
縦横変換したテーブルが欲しいんですけどSQLだけじゃムリですかね。
欲しいテーブルにあるrep_idは元のテーブルにない(生成したい)です。
元のテーブル
time status
10/1 0:01 1
10/1 1:34 2
10/1 2:00 4
10/1 22:00 2
10/1 23:32 3
10/2 1:02 4
10/2 4:05 4
10/3 18:30 2
10/3 20:34 2
欲しいテーブル
rep_id| status_1 | status_2 | status_3 | status_4
-----+----------+-----------+----------+--------
1 |10/1 0:01 | 10/1 1:34 | null | 10/1 2:00
2 |null | 10/1 23:00 | 10/1 23:32 | 10/2 1:02
3 |null | null | null | 10/2 4:05
4 |null | 10/3 18:30 | null | null
5 |null | 10/3 20:34 | null | null
縦横変換したテーブルが欲しいんですけどSQLだけじゃムリですかね。
欲しいテーブルにあるrep_idは元のテーブルにない(生成したい)です。
元のテーブル
time status
10/1 0:01 1
10/1 1:34 2
10/1 2:00 4
10/1 22:00 2
10/1 23:32 3
10/2 1:02 4
10/2 4:05 4
10/3 18:30 2
10/3 20:34 2
欲しいテーブル
rep_id| status_1 | status_2 | status_3 | status_4
-----+----------+-----------+----------+--------
1 |10/1 0:01 | 10/1 1:34 | null | 10/1 2:00
2 |null | 10/1 23:00 | 10/1 23:32 | 10/2 1:02
3 |null | null | null | 10/2 4:05
4 |null | 10/3 18:30 | null | null
5 |null | 10/3 20:34 | null | null
140デフォルトの名無しさん
2021/10/24(日) 00:25:59.14ID:4lHZz/Ub SQLだけでやってみた
WITH
ブレークチェック AS (
SELECT
CASE WHEN LAG(status,1,NULL) OVER (ORDER BY [time]) < status
THEN 0
ELSE 1
END AS st,
[time]
FROM 元のテーブル),
開始終了 AS (
SELECT
[time],
(SELECT MIN([time]) FROM ブレークチェック WHERE st = 1 AND [time] > t.[time]) AS end_time
FROM ブレークチェック t
WHERE st = 1),
t1 AS (SELECT [time] FROM 元のテーブル WHERE [status] = 1),
t2 AS (SELECT [time] FROM 元のテーブル WHERE [status] = 2),
t3 AS (SELECT [time] FROM 元のテーブル WHERE [status] = 3),
t4 AS (SELECT [time] FROM 元のテーブル WHERE [status] = 4)
SELECT ROW_NUMBER() OVER (ORDER BY 開始終了.[time]) AS rep_id,
t1.[time] AS status_1,
t2.[time] AS status_2,
t3.[time] AS status_3,
t4.[time] AS status_4
FROM 開始終了
LEFT JOIN t1 ON t1.[time] >= 開始終了.[time] AND (t1.[time] < 開始終了.[end_time] OR 開始終了.end_time IS NULL)
LEFT JOIN t2 ON t2.[time] >= 開始終了.[time] AND (t2.[time] < 開始終了.[end_time] OR 開始終了.end_time IS NULL)
LEFT JOIN t3 ON t3.[time] >= 開始終了.[time] AND (t3.[time] < 開始終了.[end_time] OR 開始終了.end_time IS NULL)
LEFT JOIN t4 ON t4.[time] >= 開始終了.[time] AND (t4.[time] < 開始終了.[end_time] OR 開始終了.end_time IS NULL)
素直にループ回すほうがいいな
WITH
ブレークチェック AS (
SELECT
CASE WHEN LAG(status,1,NULL) OVER (ORDER BY [time]) < status
THEN 0
ELSE 1
END AS st,
[time]
FROM 元のテーブル),
開始終了 AS (
SELECT
[time],
(SELECT MIN([time]) FROM ブレークチェック WHERE st = 1 AND [time] > t.[time]) AS end_time
FROM ブレークチェック t
WHERE st = 1),
t1 AS (SELECT [time] FROM 元のテーブル WHERE [status] = 1),
t2 AS (SELECT [time] FROM 元のテーブル WHERE [status] = 2),
t3 AS (SELECT [time] FROM 元のテーブル WHERE [status] = 3),
t4 AS (SELECT [time] FROM 元のテーブル WHERE [status] = 4)
SELECT ROW_NUMBER() OVER (ORDER BY 開始終了.[time]) AS rep_id,
t1.[time] AS status_1,
t2.[time] AS status_2,
t3.[time] AS status_3,
t4.[time] AS status_4
FROM 開始終了
LEFT JOIN t1 ON t1.[time] >= 開始終了.[time] AND (t1.[time] < 開始終了.[end_time] OR 開始終了.end_time IS NULL)
LEFT JOIN t2 ON t2.[time] >= 開始終了.[time] AND (t2.[time] < 開始終了.[end_time] OR 開始終了.end_time IS NULL)
LEFT JOIN t3 ON t3.[time] >= 開始終了.[time] AND (t3.[time] < 開始終了.[end_time] OR 開始終了.end_time IS NULL)
LEFT JOIN t4 ON t4.[time] >= 開始終了.[time] AND (t4.[time] < 開始終了.[end_time] OR 開始終了.end_time IS NULL)
素直にループ回すほうがいいな
141デフォルトの名無しさん
2021/10/24(日) 07:39:02.37ID:djVQHxKk142デフォルトの名無しさん
2021/11/06(土) 13:34:50.16ID:ABCltTaS 検索やら削除、CRUDをしたあとに得られるデータの命名に
rowsとかitems、個々はrowやitem
と考えています。
さらに個々rowにはdeleteやupdateのメソッドが使えるよう処理しています
つまり純粋なデータというよりインスタンス化されています
ここで疑問が。
rowという命名がしっくりこない気がします
row.column名やらrow.delete()とかで使う分にはrowで良いと思いますが
rowオブジェクトのクラス名をRowにするのはぴんとこないのです
何かいい命名案はないでしょうか
もうItemでいいかなとも思ってます
rowsとかitems、個々はrowやitem
と考えています。
さらに個々rowにはdeleteやupdateのメソッドが使えるよう処理しています
つまり純粋なデータというよりインスタンス化されています
ここで疑問が。
rowという命名がしっくりこない気がします
row.column名やらrow.delete()とかで使う分にはrowで良いと思いますが
rowオブジェクトのクラス名をRowにするのはぴんとこないのです
何かいい命名案はないでしょうか
もうItemでいいかなとも思ってます
143デフォルトの名無しさん
2021/11/06(土) 19:03:36.97ID:zfMx2fqR Row/Columnは行/列だから表(Table)に対しての名前はフィットしていると思うがな。
気に入らなければRecord/Flieldではどうかな?
気に入らなければRecord/Flieldではどうかな?
144デフォルトの名無しさん
2021/11/07(日) 12:35:47.69ID:X+EdCY7G ありがとうございます >>143
一括置換しても問題なくいつでも変えられそうなのでとりあえずはRowにしときます
一括置換しても問題なくいつでも変えられそうなのでとりあえずはRowにしときます
145デフォルトの名無しさん
2021/11/14(日) 11:47:27.97ID:wWg1lz8i 日本全国民テーブルから
年収960万円以下の世帯で、
かつ
18才未満の子供の数。
を抽出するSQLを書いて下さい
年収960万円以下の世帯で、
かつ
18才未満の子供の数。
を抽出するSQLを書いて下さい
146デフォルトの名無しさん
2021/11/14(日) 12:12:19.12ID:DPFsPWqC147デフォルトの名無しさん
2021/11/14(日) 13:47:45.91ID:E00roTgy 電通もしくはぱーそるの人か
148デフォルトの名無しさん
2021/11/14(日) 15:11:57.53ID:FPcp9uu4 んなわけねーw
5ちゃん見てたら笑うしか無いw
5ちゃん見てたら笑うしか無いw
149デフォルトの名無しさん
2021/11/14(日) 15:16:56.72ID:mFG9NQD5 >>142
Ruby on Rails のO/R マッパーでは、
命名規約で決まっているから、row みたいな抽象的な名前にならない
テーブル名が複数形のmy_books(snake case)なら、
各行は、単数型のmy_book を使えばよい
クラス名は、MyBooks(Pascal, upper camel)
ファイル名は、my_book.rb
Ruby on Rails のO/R マッパーでは、
命名規約で決まっているから、row みたいな抽象的な名前にならない
テーブル名が複数形のmy_books(snake case)なら、
各行は、単数型のmy_book を使えばよい
クラス名は、MyBooks(Pascal, upper camel)
ファイル名は、my_book.rb
150デフォルトの名無しさん
2021/11/14(日) 16:50:43.91ID:tkHjD9h1 便通はfirewallで5ch禁止してるからな
自宅から業務外で5chに質問描いてたらクビ
自宅から業務外で5chに質問描いてたらクビ
151デフォルトの名無しさん
2021/11/25(木) 19:15:00.80ID:zZUF+qfu selectはそこそこ速いのに(30秒くらいで処理終わる) updateにすると遅くなる(10分以上)要因って何が怪しいかわかる?
抽出条件は全く一緒
抽出条件は全く一緒
152デフォルトの名無しさん
2021/11/25(木) 19:15:06.69ID:zZUF+qfu selectはそこそこ速いのに(30秒くらいで処理終わる) updateにすると遅くなる(10分以上)要因って何が怪しいかわかる?
抽出条件は全く一緒
抽出条件は全く一緒
153デフォルトの名無しさん
2021/11/25(木) 20:31:30.88ID:662tr9PH154デフォルトの名無しさん
2021/11/25(木) 21:42:40.77ID:rnpiht7q selectとupdateで経過時間を比較してもあんまり意味ないよ
抽出条件は同じでもupdateは抽出後に1件1件更新処理が必要なんだから
件数が多ければそのくらいの差になっても何も不思議じゃない
抽出条件は同じでもupdateは抽出後に1件1件更新処理が必要なんだから
件数が多ければそのくらいの差になっても何も不思議じゃない
155デフォルトの名無しさん
2021/12/24(金) 16:39:20.24ID:unjC7EWw 複数のカラムのどれかに該当文字を含む行を知りたいが、
どのカラムだったかで区別したい時に、一発でやる方法ってある?
具体的には以下(2発)を一発にしたい。
SELECT 0,target FROM sometable WHERE col0 MATCH 'str' UNION SELECT 1,target FROM sometable WHERE col1 MATCH 'str' AND col0 NOT MATCH 'str';
例えば、「どのORに当たったか」を教えてくれるスカラー関数 hitplace() があったとすると、
SELECT hitplace(),target FROM sometable WHERE col0 MATCH 'str' OR col1 MATCH 'str';
に出来るのだけど。
環境はPHP+SQLite。
出力は配列の配列、 [[col0に当たった行],[col1に当たった行]] の形式で、重複はなし。
この形式にサクッと変換出来るのなら、読み出した形式は上記とは違っても可。
どのカラムだったかで区別したい時に、一発でやる方法ってある?
具体的には以下(2発)を一発にしたい。
SELECT 0,target FROM sometable WHERE col0 MATCH 'str' UNION SELECT 1,target FROM sometable WHERE col1 MATCH 'str' AND col0 NOT MATCH 'str';
例えば、「どのORに当たったか」を教えてくれるスカラー関数 hitplace() があったとすると、
SELECT hitplace(),target FROM sometable WHERE col0 MATCH 'str' OR col1 MATCH 'str';
に出来るのだけど。
環境はPHP+SQLite。
出力は配列の配列、 [[col0に当たった行],[col1に当たった行]] の形式で、重複はなし。
この形式にサクッと変換出来るのなら、読み出した形式は上記とは違っても可。
156デフォルトの名無しさん
2021/12/24(金) 17:59:49.49ID:cMhJNtck CASE式使えばできるよ
アプリかDBの設計を見直したほうがいい可能性大
アプリかDBの設計を見直したほうがいい可能性大
157デフォルトの名無しさん
2021/12/24(金) 19:31:42.64ID:unjC7EWw お早い回答ありがとう。
もっと色々試すが取り急ぎ。
新案1:
SELECT CASE WHEN col0 LIKE 'str' THEN 0 WHEN col1 LIKE 'str' THEN 1 ELSE -1 END AS col,target FROM sometable WHERE col>=0;
explainでは32、他だと文法エラーらしいがSQLiteだと通る。(参考 https://rainbow-engine.com/sql-howto-caseresult-where/)
explain query plan では
0|0|0|SCAN TABLE tags_bulk VIRTUAL TABLE INDEX 0:
新案2:
SELECT col,target FROM (SELECT CASE WHEN col0 LIKE 'str' THEN 0 WHEN col1 LIKE 'str' THEN 1 ELSE -1 END AS col,* FROM sometable) WHERE col>=0;
他ではこう書けと言われているもの。
explainでは32で、見た目中身も同じ。explain query plan も全く同じ。
もっと色々試すが取り急ぎ。
新案1:
SELECT CASE WHEN col0 LIKE 'str' THEN 0 WHEN col1 LIKE 'str' THEN 1 ELSE -1 END AS col,target FROM sometable WHERE col>=0;
explainでは32、他だと文法エラーらしいがSQLiteだと通る。(参考 https://rainbow-engine.com/sql-howto-caseresult-where/)
explain query plan では
0|0|0|SCAN TABLE tags_bulk VIRTUAL TABLE INDEX 0:
新案2:
SELECT col,target FROM (SELECT CASE WHEN col0 LIKE 'str' THEN 0 WHEN col1 LIKE 'str' THEN 1 ELSE -1 END AS col,* FROM sometable) WHERE col>=0;
他ではこう書けと言われているもの。
explainでは32で、見た目中身も同じ。explain query plan も全く同じ。
158デフォルトの名無しさん
2021/12/24(金) 19:32:06.67ID:unjC7EWw 元:
SELECT 0,target FROM sometable WHERE col0 MATCH 'str' UNION SELECT 1,target FROM sometable WHERE col1 MATCH 'str' AND col0 NOT MATCH 'str';
explainでは同じく32だが、見た目は違う。が、読み方が分からない。
explain query planでは以下。見た目通り2周している。
1|0|0|SCAN TABLE sometable VIRTUAL TABLE INDEX 9:
2|0|0|SCAN TABLE sometable VIRTUAL TABLE INDEX 11:
0|0|0|COMPOUND SUBQUERIES 1 AND 2 USING TEMP B-TREE (UNION)
MATCHはCASEの中では使えないらしくLIKEにしている。
(Error: unable to use function MATCH in the requested contextと出る。)
MATCHだとインデックスが使える分速いはずだが2周する分遅くなるのでどうなるか。
DBやアプリ構造の改善案は今のところ思いつかない。(変更は可能)
カラムはそれぞれ別の管理なので、先に合わせる事は出来ない。
SELECT 0,target FROM sometable WHERE col0 MATCH 'str' UNION SELECT 1,target FROM sometable WHERE col1 MATCH 'str' AND col0 NOT MATCH 'str';
explainでは同じく32だが、見た目は違う。が、読み方が分からない。
explain query planでは以下。見た目通り2周している。
1|0|0|SCAN TABLE sometable VIRTUAL TABLE INDEX 9:
2|0|0|SCAN TABLE sometable VIRTUAL TABLE INDEX 11:
0|0|0|COMPOUND SUBQUERIES 1 AND 2 USING TEMP B-TREE (UNION)
MATCHはCASEの中では使えないらしくLIKEにしている。
(Error: unable to use function MATCH in the requested contextと出る。)
MATCHだとインデックスが使える分速いはずだが2周する分遅くなるのでどうなるか。
DBやアプリ構造の改善案は今のところ思いつかない。(変更は可能)
カラムはそれぞれ別の管理なので、先に合わせる事は出来ない。
レスを投稿する
ニュース
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 ★9 [ぐれ★]
- 【野球】大谷翔平、佐々木朗希、山本由伸らがWBC辞退なら広がる不協和音… 『過去イチ盛り上がらない大会』になる可能性も★2 [冬月記者★]
- 【news23】小川彩佳アナ「ここまでの広がりになるということを、高市総理はどれだけ想像できていたんでしょうね」 日中問題特集で [冬月記者★]
- 【国際】ロシアはすでに戦争準備段階――ポーランド軍トップが警告 ★2 [ぐれ★]
- 「町中華」の“息切れ倒産”が増加 ブームにも支えられ職人技で踏ん張ってきたが… 大手チェーンは値上げでも絶好調 [ぐれ★]
- 毛寧(もう・ねい)報道官「中国に日本の水産品の市場は無い」 高市首相の国会答弁に「中国民衆の強い怒り」 ★2 [ぐれ★]
- 【高市副首都】 維新「副首都は人口200万人を超える都市と条件を付けろ! 福岡と札幌を除外だ!」 ※残るのは横浜、名古屋、大阪のみ [485983549]
- 【高市賃上げ】 自民党&維新の会「国会議員の給与を 月5万円アップさせる!」 今国会で歳費法改正。 月129万円→月134万円に [485983549]
- 犯罪者たち「刑事罰受けて罪は償った!被害者への賠償金?もう反省済みだから一円も払わねーよばーかwww」 [177178129]
- ㊗157円 [194819832]
- ヒロアカって面白いの?????????????????????????????????????🤔
- 瑛太の父、首吊り自殺
