dupchecked22222../4ta/2chb/653/85/tech149998565321750338809 SQLなら俺に訊け [無断転載禁止]©2ch.net ◎正当な理由による書き込みの削除について:      生島英之とみられる方へ:

SQLなら俺に訊け [無断転載禁止]©2ch.net


動画、画像抽出 || この掲示板へ 類似スレ 掲示板一覧 人気スレ 動画人気順

このスレへの固定リンク: http://5chb.net/r/tech/1499985653/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

1デフォルトの名無しさん2017/07/14(金) 07:40:53.63ID:HFjsarQi
さあ

2デフォルトの名無しさん2017/07/18(火) 22:00:59.52ID:siPNnjTj
count(*)の*と、select * fromの*は同じでしょうか

3デフォルトの名無しさん2017/07/20(木) 17:02:54.84ID:q+vyIcRX
>>2
同じだろ。何でそんな事が気になる?

4デフォルトの名無しさん2017/07/20(木) 17:41:19.81ID:3fjdXCU7
>>3
違うよ

select * from fooは、「fooテーブルの全カラム」という意味

count()の方は、
count(column_name)とカラム名を指定したときは、column_nameがnullではない行数が取得される
count(*)だとnullとか関係なしに全行数

522017/07/20(木) 20:03:27.83ID:fM45JSSS
>>3 >>4
ありがとう。なんとなく違う感じでうまく説明できなかったけど、>>4の通りだわ

6デフォルトの名無しさん2017/07/21(金) 05:29:05.88ID:5O09iCBm
>>4
>column_nameがnullではない行数
column_nameがnullになる事が有るの?

7デフォルトの名無しさん2017/07/21(金) 06:56:59.69ID:xjFWQMIy
スルー検定(初級)

8デフォルトの名無しさん2017/08/26(土) 19:24:02.61ID:DSilAr/A
foo_id, bar_id_list
"1", "1,2,3"
"2", "4,5"
"3", "6,7,8"

これを

foo_id, bar_id
"1", "1"
"1", "2"
"1", "3"
"2", "4"
"2", "5"
"3", "6"
"3", "7"
"3", "8"

こう変換するクエリって書ける?
なるべく標準がいいけどポスグレ依存でも可

9デフォルトの名無しさん2017/08/30(水) 07:14:19.33ID:FYBJnXXr
>>8
お前は秘密の合言葉を言ってない。
「お願いします。どうか教えて下さい」

1082017/08/30(水) 08:02:42.85ID:ItMe6Tvy
再帰クエリでできました

SQLは業務で使うことも多いのにSQLスレに人がいないのは寂しいですね

11デフォルトの名無しさん2017/11/03(金) 19:41:06.46ID:N8t7Jq3a
てす

12デフォルトの名無しさん2017/11/03(金) 20:07:37.65ID:N8t7Jq3a
SQL初心者です。
複数のrowを一度に取りたいのですがどう書けばいいのでしょうか。
後述の(C)より効率のよい記述を探しています。
(なおRock54回避の為シングルクオートを全角に、またselectをカタカナに変更しています)

用途は掲示板で、以下のような「先頭と最近の5投稿」の取得が目的です。
https://mevius.5ch.net/tech/
環境はSQLiteです。SQLite依存で構いません。
単純には以下2クエリになりますが、

select * from thread order by no limit 1; // (A)
select * from thread order by no desc limit 5; // (B)

A-B間で更新されたときに過渡状態のデータが返ることを避けるため、一つに纏めたいのです。
SQLiteでは読み込みにはトランザクションが使えず、BEGIN/COMMITで囲んでブロック出来ません。
試行錯誤して一応以下のクエリは通るようですが、サブクエリが効率が悪く見えるのでもっと良い書き方を探しています。

セレクト from ’1234’ where no in (values(’1234’) union セレクト no from ’1234’ order by rowid desc limit 6); // (C)

ここで1234はスレッド名=スレッド最初の投稿Noです。
4chanのように板毎にNoが打たれており、スレ内のNoは飛び飛びになっています。
なお前側values部分もサブクエリにして先頭番号を取得する limit 1のサブクエリも書き方があれば教えてください。
(デバッグ時に使う)
これも出来ません。例えば、以下は通りません。

セレクト * from ’1234’ where no in ((セレクト no from ’1234’ limit 1) union セレクト no from ’1234’ order by rowid desc limit 6); // (D)
// limitはunionの後に、とエラーが出る

(A)+(B)は同時にデータも取得する為、(C)より効率がいいと考えています。
(データの順序が異なるが、簡単にカバー出来る範囲なので問題ない)
ただし(A)+(B)だと場合によっては中途半端なデータが返る時があり、これは避けたいのです。
なお初心者の為上記前提がいろいろ間違っているかもしれませんが、その辺はご指摘下さい。

13デフォルトの名無しさん2017/11/03(金) 22:59:45.82ID:ATL1IZSq
SQLiteがreadでトランザクション使えないって、そうだっけ?
デフォルトがrepeatable readじゃないから勘違いしてるとかじゃなくて?

14デフォルトの名無しさん2017/11/03(金) 23:25:25.83ID:N8t7Jq3a
>>13
そうなのかもしれませんが、それを変える方法が分かりません。
SQL自体はSQL92準拠らしいです。
http://www.sqlite.org/fullsql.html

ちなみにトランザクションのページはこちら。
http://www.sqlite.org/lang_transaction.html

なお、select自体は一つのトランザクションらしく、例えば上記(A)(B)を繋いで begin; commit;で囲むと、
「トランザクション中でトランザクションを開始出来ません」というエラーになります。
// Error: cannot start a transaction within a transaction

15デフォルトの名無しさん2017/11/03(金) 23:38:29.19ID:N8t7Jq3a
ああすいません、これですかね?
PRAGMA read_uncommitted;
http://www.sqlite.org/pragma.html#pragma_read_uncommitted

ここの書き方だとよく分からないのですが、
デフォはSERIALIZABLEで、これをREAD UNCOMMITTED(true)にして、
さらに書き込み側をBEGIN EXCLUSIVEにしろってことですかね?

> After a BEGIN IMMEDIATE,
> no other database connection will be able to write to the database or do a BEGIN IMMEDIATE or BEGIN EXCLUSIVE.
> Other processes can continue to read from the database, however.
> An exclusive transaction causes EXCLUSIVE locks to be acquired on all databases.
> After a BEGIN EXCLUSIVE,
> no other database connection except for read_uncommitted connections will be able to read the database
> and no other connection without exception will be able to write the database until the transaction is complete.
> http://www.sqlite.org/lang_transaction.html

16デフォルトの名無しさん2017/11/03(金) 23:58:59.47ID:N8t7Jq3a
あ、いや、違いましたね。
read_uncomitted は制限を緩和する方向でした。
まだ全貌を把握しておらず、ここら辺はすみません。

SQLiteはseriarizableを実装しているとは書いてありますが、デフォが何かはよく分かりません。
> SQLite implements serializable transactions
> http://www.sqlite.org/transactional.html

ただまあ、今のところ複数selectをトランザクションに指定する方法が分かりません。
多分単発のselectなら自動的にトランザクション化してます。

17デフォルトの名無しさん2017/11/04(土) 01:14:38.64ID:tY9TOSMT
ちなみに記事は古いんですが、複数のselectをbegin/endで囲むことも出来るっぽいんですよね、、、
https://stackoverflow.com/questions/7349189/optimizing-select-with-transaction-under-sqlite-3

私が出来ないのは、こちらの環境の問題でしょうか?
PHP経由でのsqlite3.15.1と、コマンドラインの3.21.0の両方で駄目です。

18デフォルトの名無しさん2017/11/04(土) 01:32:35.14ID:tY9TOSMT
>>12を取り下げます。

どうやら私の書き方が悪かったようで、別々に打たないといけないらしく、
そうすればあっさり出来ました。
どうもすいません。
参考にしたページは以下です。
http://d.hatena.ne.jp/hide-K/20090623/1245752394

19デフォルトの名無しさん2017/11/13(月) 20:26:57.15ID:612lbeAQ
このスレはデータベース板にいるやつのネタスレだな。

count(*)は慣習上、このように書いているだけ。

20デフォルトの名無しさん2017/12/15(金) 21:10:52.36ID:Tb0OcKpN
SQLは重いというイメージが頭から離れない
またとってくればいいだけなんだが
どうしても一度取得してきたデータを使いまわしたくてプログラムがぐしゃぐしゃになる

21デフォルトの名無しさん2017/12/16(土) 20:45:23.46ID:VEeoy7XK
ん?普通そうだが、何でぐしゃぐしゃになるのかが分からん

22デフォルトの名無しさん2017/12/16(土) 21:34:31.55ID:Bt/T1sYp
スコープの長い変数をずっと持ってないといけないから
メソッドの引数がふえて
だから作ったメソッドが使いづらい

23デフォルトの名無しさん2017/12/17(日) 11:36:00.81ID:5FGxeo64
何の言語か知らんけど、構造体とかクラスで使えば良いのでは?
取り敢えず一度取得してきたデータは使いまわすのが基本
その都度発行とか有り得んから、使いまわせるように工夫すべき

24デフォルトの名無しさん2017/12/17(日) 13:31:30.67ID:qopiqGcR
えー
せっかくDB側でSQLキャッシュしてくれる機能もってんのに
プログラムでもまたキャッシュの仕組みつくるん?

25デフォルトの名無しさん2017/12/20(水) 09:30:16.27ID:CxRyWMoc
SQLってサーバー立てるのがデフォなんですか?

26デフォルトの名無しさん2017/12/21(木) 21:57:46.42ID:URpfxR/O
そんなの使い方に依るでしょ
SQLiteのが遥かに適してるのにネットワーク型拵えてるアンチパターンはかなり見るが
この逆は滅多に見ない、SQLiteは玩具過ぎて使えないと言ってる使えない人間はかなり居る

27デフォルトの名無しさん2017/12/21(木) 22:06:03.87ID:Mqu0aN7Q
そりゃそうだろ逆にしたら作れないじゃんw

28デフォルトの名無しさん2018/01/28(日) 14:32:23.14ID:Erw8GBm0
AccessでのVBAの開発の話なんだが、他言語含めて飽きるほどコード書いてきたという人がSQLで書くようなことはしないと言うんだ。
デザインビューでクエリー作るんだって。
俺とは余りに文化が違うんだが、これって俺がおかしいのかな。
それとも彼がビックマウスなのかどっちだと思う?

29デフォルトの名無しさん2018/01/28(日) 15:54:33.89ID:BfkgINY1
Accessは知らんが。

これ見る限り、そのやり方もありだろう。
https://www.microsoft.com/japan/office/previous/xp/suminaka/access/sousa/1/sousa1_15_2_honbun.htm
http://www.microsoft-access.net/start/query-2.html

> 俺とは余りに文化が違うんだが、これって俺がおかしいのかな。
> それとも彼がビックマウスなのかどっちだと思う?
お前がおかしいことは確定だが、(ただしお前が言っている意味ではない)
彼がビッグマウスかというのは意味が分からない。(だからお前はおかしい)

そもそも、やり方は一つじゃない。どっちが正しいという考え方がおかしい。
そいつにとって効率がいい方法を使えばいいだけ。
この画面通りに動くのなら、クエリ結果画面を見ながらGUIでプログラミングできる。
手打ちでSQL書いて動かしてデバッグするより早いのは確かだよ。

同様な物に、VSのフォームデザイナがある。
さすがにあれを全部手打ちする奴はいないと思うが、技術的には出来る。
あれは毎回Form1.hをパースして表示しているだけだから。
ただしパーサは自動出力の結果を読み込む前提で全くロバストではないから、
少しでもエラーがあったら止まってしまい、それ以降デザイナが使えなくなる。
だから手打ちは推奨されていない。とはいえ、出来る。

30デフォルトの名無しさん2018/01/28(日) 15:55:43.16ID:BfkgINY1
以下は推測になるが、、、
おそらくAccessも同様に、自動作成クエリを読み込んで表示するようになっていると思われる。
その場合、手打ちでクエリを作成されると、そこでエラーが発生した場合、クエリデザイナが使えなくなってしまう。
だから、プロジェクトとして、「クエリデザイナしか使うな」みたいな縛りはあり得る。
局所的に手打ちでクエリ書いたとして、そこがデザイナ側に読み込まれないのならエラーにはなりようもないが、
後の人が手打ちでクエリを書けない人ならメンテナンスが出来なくなってしまう。

ただし、デザイナに頼りすぎると後々色々大変になるので、
中にはデザイナは最低限しか使うな、という人もいる。
フォームの場合は「イベントをデザイナで書くな」みたいになるわけだが、
Accessの場合は「クエリをデザイナで書くな」になるんじゃないかな?

だから、そこはやり方の問題だ。
どっちが正しいかではなく、どちらを選ぶかだ。当然、チームの他の人員のスキルも考慮しないといけない。
Accessの場合にどちらが主流派なのかは俺は知らない。

ただな、SQLってのはDB用アセンブラみたいなもので、
実際、そんな物をいちいち手打ちしてたら効率は上がらないだろ。
SQLは未来永劫手で書くものだ、と思っているのならお前がおかしい。
(俺は使ったこと無いが)ORMはそこを完全に隠蔽していて、SQLなんて当然自動生成で、
プログラマがいちいち書くはずもないだろ。(現実にはそうでもないらしいが、少なくともそこを目指しているだろ)
ただし、スキルとしては当然読めた方がいいし、手でも書ける人が手抜きする為にデザイナを使うのが本来は正しい。
だから君の立ち位置は間違ってはいない。
君はデザイナを覚えて、君のプロジェクトではどちらを使うか判断すればいいだけ。
既にあるプロジェクトに参加するなら、そのプロジェクトの流儀に従うしかない。

繰り返すが、俺はAccess知らないから、Accessの文化については他の人を待て。

31デフォルトの名無しさん2018/05/21(月) 19:04:06.55ID:aAfPm2kk
SQLでJOIN等の結果に別名を付けるエイリアスってありますか?

32デフォルトの名無しさん2018/05/22(火) 02:42:52.45ID:BxsxaQQf
>>21
サブクエリにして別名つければ

33デフォルトの名無しさん2018/05/23(水) 11:08:43.69ID:+HKSXK/9
>>32
解決しました。ありがとうございました。
ところでミックさんの本は名著だと思いますが、セルコを読んでみたら、むちゃくちゃわかりやすくて驚きました。
プログラミングの本は洋書に限るという主張はかなり当たっていますね。

34デフォルトの名無しさん2018/05/24(木) 01:57:22.85ID:UTbVU3sw
日本語でもあれだけの容量を割ければわかりやすく書けるのでは。
日本語の技術書って2000部出ればヒットの部類だって言うし
国産で6000円の本がどれだけ売れるやら(=コストがかけられるか)
楽器の教則とかも似た感じだが
勢い初心者向けの入門書が多くなり、レベルの高い本はページ数が足らなくて
分かる人だけ分かってとか分かってる人が知識の確認に使う本が多い気がする

個人的には洋書(の翻訳)は
「もうxxでxxする必要はないのです!」
みたいな無駄な例えとかジョークが多くてちょっとイラっとする時がある

35デフォルトの名無しさん2018/05/24(木) 21:00:50.73ID:tj3fGZUH
SQLで超高速スクロールシューティングゲームを作りたいのですがどこから勉強したらいいのかわかりません

36デフォルトの名無しさん2018/05/26(土) 08:25:51.19ID:ww7rlXCh
何のネタ?

37デフォルトの名無しさん2018/05/30(水) 21:07:58.36ID:mJRov030
SQLが出来なさ過ぎて今日解雇されました・・・

38デフォルトの名無しさん2018/05/31(木) 05:05:26.67ID:iPLFO8dU
SQLの勉強をした後に普通の手続き型言語の勉強をすると楽ちんさに驚く。SQLは難しいわ。

39デフォルトの名無しさん2018/06/05(火) 09:59:14.61ID:tY+4OZF+
ミック氏の著書にある「WHERE句で分岐させるのは素人、
プロはSELECT句で分岐させる」を職場で実践したら異常
者扱いされて追放されたよ

40デフォルトの名無しさん2018/06/05(火) 19:17:49.83ID:EhA+zJu2
>>39
その職場は日大アメフト部か?

41デフォルトの名無しさん2018/06/06(水) 22:27:26.69ID:R4gO35f9
[tbl]
key
-----
A
B
C
D
こんなテーブルがあって、
SELECT key
FROM tbl
ORDER BY CASE WHEN key = 'B' THEN 1
WHEN key = 'A' THEN 2
WHEN key = 'D' THEN 3
WHEN key = 'C' THEN 4
END;
このSQL文で並べ替えができるのはなぜでしょうか?

42デフォルトの名無しさん2018/06/07(木) 08:40:18.91ID:Jg+r/SZw
>>41
クイズ?

43デフォルトの名無しさん2018/06/07(木) 10:09:37.01ID:2+Xi7sa/
ミックさんの本に同じ例題があったな

44デフォルトの名無しさん2018/06/19(火) 19:15:35.13ID:67yeiw0t
n+1問題ってなんやねん

パフォーマンス低下したら何がいけないの?

45デフォルトの名無しさん2018/07/04(水) 22:30:30.92ID:gFgZc5FG
KOC

46デフォルトの名無しさん2018/07/27(金) 09:24:44.45ID:kjOumEVE
文字列を追記するにはどうすると良いのでしょう?
これだと上書きされてしまいます。
どうすると良いのでしょう?

$sql = 'update imglistdb set mcategory = ? where id = ?';
$stmt = $dbh->prepare($sql);
$flag = $stmt->execute(array($w, $id));

if ($flag){
print('データの更新に成功しました<br>');
}else{
print($id.'のデータの更新に失敗しました<br>');
}

47デフォルトの名無しさん2018/08/05(日) 16:50:26.11ID:ja6KHJcY
>>46
できました。

48デフォルトの名無しさん2018/08/10(金) 14:51:46.21ID:Y0WYl7hO
サマータイムが導入されたとしてUTCで時刻が記録されてテーブルで
今日の分の売り上げを集計する場合どうするのが正しいですか?

49デフォルトの名無しさん2018/08/10(金) 21:30:06.76ID:gtqPLADd
「今日」を定義しろ。

50デフォルトの名無しさん2018/08/24(金) 09:10:24.90ID:AhUX2VuR
SQLの構文ってなんであんなクソだらけなものが採用され続けているの?

insertのintoとかupdateのsetとかいらないし
updateでwhereを指定し忘れたら全レコードが更新されるのとか超危険だし
updateはID指定→値指定で更新っていうのが直感的にやりやすいのに
whereを最後に持ってこないといけない仕様のせいでid指定が最後になるし
カラムと値の指定の仕方も一貫性がないし

後方互換性としてあれらのコマンド"も"使えるならまだわかるけど
あれらのコマンド"しか"使えないとかこの業界頭おかしいんじゃないの

51デフォルトの名無しさん2018/08/24(金) 10:46:30.87ID:h+5y0En0
言いたい事は分かるし別に否定はしないのだが、糞でも広まって使われてる以上それに従わざるを得ないのさ
JSと一緒だよ

52デフォルトの名無しさん2018/08/24(金) 11:18:46.54ID:Gecec4UJ
フェールセーフの仕組みはインターフェースの実装レベルでなんとかしてねってことなんじゃないの

53デフォルトの名無しさん2018/09/15(土) 19:10:17.26ID:crViL/AR
データの持たせ方を誤ってしまって、
カラム定義
時間,val1,val2,val3・・・
ってなってるんですが、val1からvalnで最大値を取りたい場合、どのようにアプローチするのがスマートですか?

54デフォルトの名無しさん2018/09/15(土) 20:19:51.77ID:KIanXBkQ
時間がユニークじゃないどうしようもない状態なら
とりあえずコレでいけるハズ

select
 max(ahox.time_),
 max(ahox.max_val)
from
 (
  select rowid, time_, val1 as max_val from aho
  union all
  select rowid, time_, val2 as max_val from aho
  union all
  select rowid, time_, val3 as max_val from aho
  ...
 ) ahox
group by
 rowid

時間がユニークならrowid(DBMSが内部的にテーブルにもたせてる行の識別値)みたいなもんは使う必要ない
使う必要があるならrowidはDBMSごとに違うからあとは調べなさい

55デフォルトの名無しさん2018/09/15(土) 20:37:41.73ID:KIanXBkQ
運用方法のアプローチとしては
とりあえず一回全抽出してテーブルを作り直したほうがいい
こんな感じのワークテーブルをマニュアル作業で一旦作る

 id, eventno, 時刻, 項目名, 値

eventnoの部分にはとりあえずrowidつっこんどく
で、idはただのシリアル値

システムがこの形式のテーブルに落とせる運用にすれば
それからはすぐに最大値がとれるようになる
そうなるまで毎回ワークテーブル作って最大値とるようにすればいい

それまではマニュアル作業で自分でテーブルをつくりなおす
失敗したヤツがちゃんと責任もってやるようにな

56デフォルトの名無しさん2018/09/15(土) 22:24:53.50ID:VdLZkjGs
エクセルの行列を、そのまま表定義にする、馬鹿が多い

列に製品番号があれば、列1・列2・列3 と定義しよる。
それで製品番号が増えるたびに、列を増やしていくw

頭おかしいw

57デフォルトの名無しさん2018/09/15(土) 22:31:40.71ID:crViL/AR
>>54
>>55
お二人共、ありがとうございます。
テーブル再定義も含め、まずは54さんの手法でこの場は凌いでみます。

58デフォルトの名無しさん2018/09/15(土) 22:37:05.98ID:crViL/AR
>>57
同一IDだた。いずれにしてもサンキューです。

59デフォルトの名無しさん2018/09/16(日) 00:44:59.12ID:LDoJnfCQ
>>56
それな、まずは糞なテーブルを捨てろ

60デフォルトの名無しさん2018/09/22(土) 16:25:45.44ID:/Du2bEHB
DBの検索速度ってPC上ではかなり遅いみたいですけど
大手Webサービスはどこも一瞬で結果を返してくれますよね
あれは単にサーバーのスペックが凄いから早いんですか?

61デフォルトの名無しさん2018/09/22(土) 20:22:55.42ID:U3p59MUv
>>60
「DBの検索速度ってPC上ではかなり遅いみたい」
この前提がまずよくわからんが
オンメモリやらキャッシュやら高速ネットワークやら
みんな色々工夫してるから

62デフォルトの名無しさん2018/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するのは何故なのでしょう?

63デフォルトの名無しさん2018/10/23(火) 23:04:42.87ID:+Sb0MP+K
TAB1の値がほしいから
いらないなら書く必要すらない

64デフォルトの名無しさん2018/10/23(火) 23:05:20.44ID:QS1DBBVT
欲しかったからだろ。

65デフォルトの名無しさん2018/10/24(水) 13:40:18.23ID:AfSv/oYJ
ありがとうございました。
すっきりしました。
SELECT文は新しテーブルを作るのではなくて
見やすいように表型に情報を表示してるだけなのですね

66デフォルトの名無しさん2018/10/24(水) 22:54:40.93ID:WtQFT3Lb
いや概念的には表を作ってる
表から表を作ってる

そういった理解がないとSQLは理解できない

その表からまた別の表を作るのにも利用できる

67デフォルトの名無しさん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になるんだと思うのですが…。

69デフォルトの名無しさん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);

で行けたのですが、これって一般的なやり方でしょうか?

70デフォルトの名無しさん2018/11/03(土) 15:38:32.68ID:rSl2Ac3O
オレなら普通に DEF_TIME を時分秒の文字列に変換してから比較する
時分固定でその日に該当する年月日時分をいちいち組み立てようとは思わない

71デフォルトの名無しさん2018/11/04(日) 13:01:05.98ID:mRQV89co
日付まわりはDBによって違いがあるからなんとも言えんが、こんな可読性も実行効率も悪いSQL書いてたら説教ものだな

72デフォルトの名無しさん2018/11/11(日) 14:35:31.84ID:vUUak6BF

73デフォルトの名無しさん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が散見してるんだけどこれって全く外部結合する意味ないよな
意味不明すぎてイラッとしてきた

74デフォルトの名無しさん2018/11/27(火) 18:43:21.08ID:DSo9/Qg/
T1.aaa = T2.aaa

これは、両方の表にあるものだけを取り出す。
片方の表だけにあるものは取り出さない

75デフォルトの名無しさん2018/11/27(火) 18:47:04.05ID:2K5MWtLk
言いたいこともわからんのかw
過疎だしここもレベル低すぎてダメだな

76デフォルトの名無しさん2018/11/27(火) 19:41:43.98ID:dtVd+WAB
意味無いことはないけど、多分意図してることじゃないよ

77デフォルトの名無しさん2018/11/27(火) 19:47:50.54ID:PufIRrup
ID:2K5MWtLk
小さいことにイライラしてるわいきなりキレだすわ気持ち悪っw

78デフォルトの名無しさん2018/11/27(火) 20:13:38.58ID:2K5MWtLk
0.01㍉もキレてないけどね
このスレは初めて見て初めて書き込んだけど
こっちの言いたいことも理解できないパープリンしかいないうえに
二言目が人格攻撃とかレベル低すぎて俺にはもう無理だわw
低能

79デフォルトの名無しさん2018/11/27(火) 20:41:37.76ID:JHhXTC3j
joinしてるテーブルとか書いてないし、ちゃんとSQL全部見て言ってるのかあやしいな

抽出してなくてもwhereとかで使ってれば意味はあるぞ

80デフォルトの名無しさん2018/11/27(火) 20:44:19.89ID:ysmS7zNS
左外部結合だからT1のレコードは全部取り出される。
で、T1にあるフィールドしか取り出さないからT1そのものと一緒だな。

単に間違いか、以前はT2のフィールドも取り出してたけど編集を繰り返してる内にT2のフィールドが要らなくなってしかもT1そのもので良いことに気付いて無いとかかな。

81デフォルトの名無しさん2018/11/27(火) 21:08:12.03ID:dtVd+WAB
一緒にはならないよ。T2のaaaが複数あるならそれだけ同じものが出てくるよ。

82デフォルトの名無しさん2018/11/27(火) 21:30:18.04ID:ysmS7zNS
>>81
???
T1のフィールドしか取り出さないでしょ。

83デフォルトの名無しさん2018/11/27(火) 21:31:25.10ID:ysmS7zNS
ああ、レコードのことね。
でもそんなことする意味有る?

84デフォルトの名無しさん2018/11/27(火) 21:44:13.52ID:7ygBETe/
データパターンでわざと増幅させたい場合はありだな

意味がないならきちんとテストして取り除けばいいだけじゃん

85デフォルトの名無しさん2018/11/27(火) 21:50:57.15ID:dtVd+WAB
>>83だから、>>73に挙げられた情報だけじゃ判断できないよ
例えばT2がT1を色々加工した結果で、既にT2の値を外部に持ってて、それと突き合わせて比較したいためのSQLとか、かもしれない
想像するだけ無駄なので、仕事なら知ってる人を探しに行く方が良い

けど、特に何の効果も無いと結論づけるのだけは間違ってるよ。T2.aaaにunique制約があるかも分からないのだから

86デフォルトの名無しさん2018/12/11(火) 22:34:22.95ID:0Fe3pinh
抽象化の機能が殆どなくて、クエリのいたるところににコピペが必要な部分が出てきて、アセンブリのような扱いになっているSQLに、未来はあるのでしょうか?
仕事で他人の書いたSQLが読み解けなくて、達人に学ぶ SQL徹底指南書を読んでいるんだけど、
「豪快に GROUP BY句にも SELECT句の CASE式をコピーしてやるのがポイントです」とか身の毛もよだつ文章で既に萎えつつあります

87デフォルトの名無しさん2018/12/11(火) 23:14:47.15ID:j8P28cRB
>>86
SQL専門家ではなく、プログラマだが。

SQL自体は残ると思うよ。DB弄るのにはあれくらいがいい。
そもそもSQLを「手で打つ」事はあり得ないでしょ。普通はプログラミング言語経由だ。
だから抽象化したければプログラミング言語で出来るし、それで十分だ。

SQL自体に抽象化を持ち込むのは、俺は反対だね。
それはSQLでプログラミングすることに繋がっていくが、
現時点ですでにDB側にロジックを持ち込むのはろくな事にならない、ってことになってるだろ。
ある意味、プログラミング言語はロジックを記述する為に出来ているわけで、当然の話だが。
(ロジックを記述するならSQLよりプログラミング言語の方が断然いい)

それ以前に、そもそも、SQLを手で書く事がなくなりつつあるだろ。
物によってはクエリデザイナもあるし、フレームワーク等を導入した場合、隠蔽されたりする。
この意味で、SQL自体を学ぶ必要があるかは、微妙になりつつあるが。
とはいえ、
> 仕事で他人の書いたSQLが読み解けなくて
なら、リファクタするにしても読み解けるようになるまでは学ぶしかないが。

SQL自体が原始的なのは文句を言ってもしょうがないだろ。
事実として規格は古いし、DB向けのアセンブラなんだし。

88デフォルトの名無しさん2019/01/04(金) 14:11:21.43ID:HolJeFBP
ORM求める輩って何なんだろうなSQL書けよ

89デフォルトの名無しさん2019/01/04(金) 16:56:58.28ID:t+y7QrAc
ミクロサービスだとSQL要らんのよね
なのでormで楽したい

90デフォルトの名無しさん2019/01/04(金) 19:23:43.78ID:aVQoc2JA
>>88
インピーダンスミスマッチでググれ

91デフォルトの名無しさん2019/01/22(火) 06:30:06.30ID:PjxX9ixQ
CASE文のみで2番目に高い値を取得する方法はありますか?
groupbyなどは使えない制約下とさせてください。

92デフォルトの名無しさん2019/01/22(火) 08:19:37.13ID:QMgfUI4D
group by使わないならnot exists

93デフォルトの名無しさん2019/01/22(火) 16:01:09.95ID:vFYQiqmx
Order by 〇〇 Limit 2で1番目捨てる

94デフォルトの名無しさん2019/02/16(土) 23:27:10.19ID:CD9VXZwW
SOQLってどうですか?
自由にJOIN出来ないってどうなのよって思うんですが。

95デフォルトの名無しさん2019/04/14(日) 21:36:53.40ID:KKPn+v5/
SQLとMySQLの違いというか、関係ってどういう関係ですか?
MySQLがSQLの拡張?

96デフォルトの名無しさん2019/04/14(日) 21:53:01.78ID:IovzG98E
C言語とgccの関係

97デフォルトの名無しさん2019/04/14(日) 21:59:03.38ID:KKPn+v5/
文法とそれを実行する処理系統?みたいなことですか

98デフォルトの名無しさん2019/04/14(日) 23:36:59.84ID:NCCiDrpj
SQLは言語
MySQLは製品名、SQLでデータ操作ができる

99デフォルトの名無しさん2019/05/17(金) 10:15:36.61ID:nnDIZl0o
PythonでSQLiteのデータを更新中にコミットしないままプログラムが強制終了してしまった事があって
DBファイルが開けなくなったことがあったんですけど(それはバックアップを使って復帰させたんですけど)
もしバックアップを取ってなかった場合、どうやって復帰させればいいんでしょうか
-journalというファイルが残っているのでこれを使うのは予想できるのですが…

100デフォルトの名無しさん2019/07/11(木) 08:12:00.70ID:4eXCjsM2
Webの情報をSQLiteに書き込む処理は概ね慣れてきたんですけど
書き込んだ情報を見やすく表示したり、表示中の情報をクリックして関連項目を検索したり、
データを手動で書き換えたりするには
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/1U
>>102
朝井淳さん
谷尻かおりさん
ミックさん

この辺の入門書を読んでおけばおk

104デフォルトの名無しさん2019/12/04(水) 05:09:58.36ID:yxtCj8pw
>>103
イラストで理解 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で安くで出品してよー


lud20200629115936
このスレへの固定リンク: http://5chb.net/r/tech/1499985653/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

TOPへ TOPへ  
このエントリをはてなブックマークに追加現在登録者数177 ブックマークへ



全掲示板一覧 この掲示板へ 人気スレ | Youtube 動画 >50 >100 >200 >300 >500 >1000枚 新着画像

 ↓「SQLなら俺に訊け [無断転載禁止]©2ch.net 」を見た人も見ています:
C言語なら俺に聞け 150
C言語なら俺に聞け 143
C言語なら俺に聞け 147
C++ Builderなら俺に聞け
C言語なら俺に聞け 154
C言語なら俺に聞け 159
C言語なら俺に聞け 139
■隠蔽なら俺にまかせろ(すが)■
●●●●TCL/TKなら俺に聞け 4●●●●
日本人「やるなら軍師。俺に逆らうやつは非国民」
るしあのチャンネル削除するなら俺に100万くらいで売ってくれよ
地方からマーチ未満、ニッコマ以下行く奴の気が知れん、金捨てに行くなら俺にくれ
一流漫画家(34)「職質に憧れてるのに全然されないから交差点で待機中の警察に「暇なら俺に職務質問してください」って頼んだら断られた」
お前ら俺に付いてくんな
俺にふさわしいバイク
最近お前ら俺に反抗的だよな
超絶初心者の俺にイロハを教えて
第3回高1全統模試東大B判の俺に一言
今日が誕生日な俺に質問ある?
全局天和or地和で上がる俺に勝てる?
吃音の俺に彼女が出来そうなんだが
PC初心者の俺におすすめPCを教えて...
★デプスを使わせたら俺に勝てる輩はいない★
これから情報系の大学に進む俺に何かアドバイスを
俺にバレンタインチョコをくれそうなコテ
俺にHIPHOPのオススメ曲教えて Part. 2
店長の俺に対するマークが厳しくなってきた
欲しいものリスト貼るから俺にテレビ買ってくれ
チャンネル桜 117【今くれ、金くれ、俺にくれ】
バカな俺に一時不等式の数直線について教えてくれ
【中型】初心者ライダーの俺にバイク布教するスレ
俺に話しかけてくれる女がカーナビと券売機だけの件
今週の金曜日にやっと映画を見に行く俺にアドバイスするスレ
有吉(43歳)「ゴリ(45歳)は後輩のくせに俺にさん付けしない」
スプラトゥーン2を8ヶ月放置した俺にアドバイス下さい
なんでお前ら俺から見たらヒラ社員なのに名誉役員の俺に歯向かってるの?
模試で記録した最高偏差値俺に勝ってる奴いる?(進研模試除く)
お前らは俺に殴られたことに気付かない 俺のパンチは光より速いから
vistaからパソコンを使い始めた俺に昔のパソコンについての逸話を教えるスレ
俺にまとわりついてくる頭が残念な女の子を妊娠させてしまった、どうしよう?
数年ぶりに実家帰ってきたら母親が宗教に嵌まって借金までしてた俺に質問するスレ
ゼノブレイド2とオクトパストラベラーがつまらない俺に良作を教えるスレ
36歳年収320万貯金400万俺に「しねしね!!って連呼して1000目指すスレ
ここ最近人生詰んだばかりの俺に質問ある?&#12310;マジレス&#12311;
【格闘技】K-1 皇治、打倒・武尊に自信満々「アイツは俺に怯えている」
かわいい女の子の画像見てたらなんで俺にはこんなかわいい彼女ができないんだろうかと泣けてきた
バイト場でコミュ障でまともな返しできてない俺に笑顔で何度も話しかけてくれる女の子がいる
AT限定「クソッ!ゾンビに囲まれたけどMT車しかない!」MT免許俺「どけ…俺に任せろ」
大雪の中、会社から家まで『徒歩』で帰ってきたわけですが、おまいら俺に何か言うことあるよね…?
【実は20】 懐メロ洋楽に関するくだらねえ質問はここで訊け! TWENTY 1 【アスペルゲンガー】
最近オナホが俺にフィットしてきた気がするな、これまさか革ジャンみたいにピッタリしていくのか?
野党「投票してくれ!支持してくれ!」若者「それで、俺にどんな得があるの?」野党「えっ?それは……その……」
エレベーターが来るまで俺はずっと待ってたのに、今来て俺に開ボタン押しっぱにさせて乗り込んでとくだけするカス
今さっき兄貴に「親父とお前は俺にあれやってみろこれやってみろって言って俺を惨めにさせて何したいの??」って怒られた
【社長辞めたけど注目が欲しい!かまって!】元ゾゾ前澤、1000億円通帳に記帳の動画批判に「俺に批判する奴は下品」
ザ・おなら
みなさんさようなら
ナンを売るなら♪
慶應SFCと千葉なら
さようなら調布飛行場
まぁしかし男なら
名古屋で二重にするなら
さよならキセノン
人生をやりなおせるなら
09:13:30 up 63 days, 10:12, 0 users, load average: 7.01, 7.60, 7.57

in 1.2517211437225 sec @1.2517211437225@0b7 on 061922