0334NAME IS NULL2017/05/29(月) 23:57:58.93ID:ppw3vS3C>>332 グループ化で複数レコードが存在存在するnameを排除すればいい。 0335NAME IS NULL2017/05/30(火) 00:12:21.01ID:??? 複数レコードが存在するレコードを削除すればよい、ではなくてか。 having count(*) = 1 みたいに。 0336NAME IS NULL2017/05/30(火) 00:13:06.46ID:??? 削除っていうと聞こえが悪いけど、そこはご勘弁 0337NAME IS NULL2017/05/30(火) 14:28:59.06ID:dt3JZxtj>>332 DISTINCT 0338NAME IS NULL2017/05/30(火) 14:35:58.66ID:??? まとめると SELECT col_a, col_b, col_c FROM テーブルデータ GROUP BY (col_a, col_b, col_c) HAVING COUNT(*) = 1 こうかね? ORDER BYもいるとは思うけど
DISTINCTは name2 0 2 も1件でちゃうような 0339NAME IS NULL2017/05/30(火) 15:13:05.29ID:??? select * from テーブルデータ where col_a in (select col_a from テーブルデータ group by col_a,col_b,col_c having count(*) = 1); 0340NAME IS NULL2017/05/30(火) 16:13:29.76ID:??? a,b,c以外にも表示したいときはそうなるか まあ (a,b,c) in (select a,b,c from 〜 ) とかになるだろうけども 0341NAME IS NULL2017/07/11(火) 14:39:34.13ID:VmiHpvub 項目A,B,C,Dの値を入れ替えたいです。 ・DBMS名とバージョン:postgreSQL 8.4.13 ・テーブルデータ A B C D 1 2 3 4 1 2 3 4 2 3 4 1 このテーブルのAの値をBに、Bの値をCに、Cの値をDに、Dの値をAに入れたいです。 A B C D 4 1 2 3 4 1 2 3 1 2 3 4 としたいです。
UPDATE TABLENAME SET A = D, B = A, C = B, D = C; でよいのでしょうか。よい場合、変更する項目数が50位でも大丈夫でしょうか。 検索したところ、2項目の入れ替えはこれでよいようなのですが、 複数(多数)の場合でもよいものか教えていただきたいです。 よろしくお願いします。 0342NAME IS NULL2017/07/11(火) 14:42:47.22ID:???>>341 それでいい 0343NAME IS NULL2017/07/12(水) 02:12:00.48ID:???>>342 ありがとうございました。自信を持って(?)作業します。 0344NAME IS NULL2017/07/12(水) 05:24:51.54ID:??? え、BにDの値入らない?大丈夫? 0345NAME IS NULL2017/07/12(水) 10:20:42.90ID:???>>344 大丈夫
create temporary table tmp select d as a,a as b, b as c, c as d from TABLENAME; delete from TABLENAME; insert into TABLENAME select * from tmp; 0351NAME IS NULL2017/07/13(木) 05:58:18.91ID:??? 【テンプレ】 ・DBMS名とバージョン : mysql Ver 14.14 Distrib 5.1.73, ・テーブルデータ : 添付画像をご覧ください ・欲しい結果 ; 添付画像をご覧ください
MySQLTunerを実行してみると failed to execute: SELECT VERSIONのようなのが鬼のように表示され、 General recommendationsに下記のように表示されてます。
query_cache_size (=0) query_cache_type (=0) query_cache_limit (> 1M, or use smaller result sets) join_buffer_size (> 128.0K, or always use indexes with joins) tmp_table_size (> 16M) max_heap_table_size (> 16M) thread_cache_size (start at 4) table_open_cache (> 400) performance_schema = OFF disable PFS innodb_file_per_table=ON innodb_log_file_size * innodb_log_files_in_group should be equal to 1/4 of buffer pool size (=64M) if possible.
(=0)は0にしなさい。 (> 1M)は1MB以上に指定しなさい。 それに合わせてmy.confに入れてみたんですが、 これが全く変わりません。 0361NAME IS NULL2017/07/16(日) 10:22:53.35ID:??? straceしてみてどの設定ファイル読んでるか確認してみたら? 0362NAME IS NULL2017/07/17(月) 08:19:42.44ID:??? 久しぶりに来た半初心者なのですが、上の方の議論で出てた会計年度の話は、単に引き算を利用してはいけなかったんでしょうか
4ヶ月引いて1日足して、としてやれば安定して通常年度に戻せる気がするのですが 0363NAME IS NULL2017/07/17(月) 10:26:23.55ID:ELQvIlPL 日付から年度を求めたい、という話? そういうのでもいいけどそれ間違ってるからね 0364NAME IS NULL2017/07/17(月) 10:28:40.66ID:??? どの話をしようとしているのか分からん
4ヶ月引いて1日足すというだけでも 30日に1日足したら31日になるのか1日になるのかどう判断するんだ? 0365NAME IS NULL2017/07/17(月) 10:39:33.34ID:???>>363 ほんとだ なんで足す1出てきたし4なんですかね
なんにせよありがとう 0366NAME IS NULL2017/07/23(日) 12:32:38.73ID:??? 例えば、左から右に行って、 途中でジェイってなって、そのまま終わったらいいかと思うんですが。 新しいSQLの概念というか。 0367NAME IS NULL2017/07/23(日) 15:48:13.53ID:???>>386が何を言ってるのかさっぱり判らぬ 0368NAME IS NULL2017/07/23(日) 15:48:48.68ID:??? 間違えた。 >>386じゃなく>>366だった^^; 0369NAME IS NULL2017/07/23(日) 16:38:22.44ID:??? 大丈夫、俺も分からん 0370NAME IS NULL2017/07/23(日) 16:58:56.49ID:??? RDBMS使ってRPG作ろうとしているのかな? 0371NAME IS NULL2017/07/23(日) 19:13:31.67ID:ic0ZKVtq 月末日なんて翌月の1日前なのになw 0372NAME IS NULL2017/07/23(日) 19:42:03.08ID:???>>371 その翌月の日が1日だったらな 0373NAME IS NULL2017/07/23(日) 19:49:11.25ID:???>>372 は? 0374NAME IS NULL2017/07/23(日) 21:05:31.62ID:???>>372 月末の次の日が1日じゃないケースってなに? 0375NAME IS NULL2017/07/23(日) 21:59:12.88ID:???>>371の言う「翌月の1日前」が「翌月の1日の1日前」という意味なら、ってことだろ。 0376NAME IS NULL2017/07/23(日) 22:36:23.90ID:??? 7月23日の翌月の1日前は8月22だろjk 0377NAME IS NULL2017/07/23(日) 22:46:18.66ID:??? おまえ、そんな頭のレベルでよくSQL云々出来るなぁ 0378NAME IS NULL2017/07/23(日) 23:25:31.06ID:??? IPAの試験が、読解力を試されるような問題だらけになるわけだ。 0379NAME IS NULL2017/07/23(日) 23:40:56.92ID:??? 営業日の話ししてんじゃないのか 0380NAME IS NULL2017/07/24(月) 00:34:13.18ID:??? 複数の同一形式のcsvからデータを読み取る時、普通は↓こんな風に定義するけど、
SELECT tableA.名前,AVG(tableA.国語)AS 国語平均,AVGtableA.英語)AS 英語平均 FROM tableA,tableB WHERE tableA.日付 >= tableB.採点開始日 AND tableA.名前,tableB.名前 0382NAME IS NULL2017/07/26(水) 22:18:02.28ID:???>>381 tableA は 日付、名前、国語、英語 です。 0383NAME IS NULL2017/07/26(水) 22:38:14.43ID:???>>381
SELECT tableA.名前,AVG(tableA.国語)AS 国語平均,AVG(tableA.英語)AS 英語平均 FROM tableB inner join tableA on tableA.日付 >= tableB.採点開始日 AND tableA.名前=tableB.名前 group by tableA.名前 でいいんじゃないかな 0384NAME IS NULL2017/07/26(水) 22:55:56.85ID:???>>383 ありがとうございます join したほうがいいのかな これを参考にしてやってみます。 0385NAME IS NULL2017/07/27(木) 11:16:31.96ID:???>>384 データ量はたぶんたかだか数万レコード程度だろうから、どんなやり方でもパフォーマンス的には気にする必要ないと思うよ 0386NAME IS NULL2017/07/27(木) 21:34:59.28ID:???>>383 横からだが、fromとwhereで結合しても、joinで結合しても 書き方が違うだけで同じだぞ
パフォーマンス気にするなら、使ってるDBMSの実行計画読めるようにならないと 事前に結合した実データ(のテーブルやビュー)用意するんじゃなければ SQLの書き方では差がでないのが原則 0387NAME IS NULL2017/07/27(木) 22:17:49.93ID:Wb6w4MLZ じじいが嘘を広めていることもあるから混乱するんだよな。 0388NAME IS NULL2017/07/27(木) 22:31:45.92ID:??? tableAのデータがあった場合、tableBの結果と、tableCのビューが欲しいです。 tableAの補習が入った場合は学校にいくまでの間はすべて補習の時間になります。 まったく書き方が見当がつかないのでアドバイスお願いします