元スレMySQL 総合 Part15

みんなの評価 : ☆
604 = :
テーブル(A)からテーブル(B)のデータを取り除きたい
テーブル(A)
日付 | 点数
----------------
2009/10/1 | 89
2009/10/2 | 83
2009/10/2 | 90
2009/10/3 | 93
2009/10/3 | 84
2009/10/7 | 79
2009/10/7 | 66
2009/10/8 | 72
2009/10/9 | 80
テーブル(B)
日付 | 点数
----------------
2009/10/2 | 90
2009/10/3 | 84
2009/10/7 | 66
テーブル(A)があり、そこからテーブル(B)のデータだけを取り除き、
テーブル(C)のようにしたいのです。
どなたかよろしくおねがいします。
結果テーブル(C)
日付 | 点数
----------------
2009/10/1 | 89
2009/10/2 | 83
2009/10/3 | 93
2009/10/7 | 79
2009/10/8 | 72
2009/10/9 | 80
605 = :
取り除くって、削除? それとも、単にselectしたくないだけ?
606 = :
ところで、mysqlって・・sennaとかいうやつ使わないと、全文検索ってまだ出来ないんでしたっけ?
610 = :
FAQかも知れませんけどご存知の方がいたらご教示下さい。
OS Windows2000Pro SP4
mysql Ver 14.14 Distrib 5.1.30, for Win32 (ia32)
コマンドプロンプトでmysqlを実行すると日本語のカラムの表示が文字化けします。
ServerとClientのキャラクタセットが違っていると文字化けが発生するそうですが
statusの出力結果は
Server characterset: cp932
Db characterset: cp932
Client characterset: cp932
Conn. characterset: cp932
とServerとClientのキャラクタセットは同じになっています。
ちなみに化けるのはコマンドプロンプトでmysqlを実行した時だけで
MySQL Query Browserやコマンドプロンプトでmysqldumpを実行した時は
正しく表示されます。
何が悪いのしょうか?
612 = :
>>610
show create table テーブル名\G
で、テーブルやカラムの charset を確認してみては?
あとは、select hex(カラム名) from テーブル名 とかで、
本当に自分が思っている文字コードで文字が格納されているか確認するとか。
613 = :
レプリケーションって・・どのくらいパフォーマンス下がるんですか?
もしパフォーマンスに影響が出ないなら、バックアップとして使おうかなと思ったりしているんですが…
614 = :
更新の量次第だけど、たいしたことないよ。
615 = :
最大値や最小値だけでなく、2番や3番の値も取得したい
テーブルA
名前|受けた月|点数
------------------
佐藤|1月|520
佐藤|3月|584
佐藤|7月|598
佐藤|9月|556
佐藤|11月|645
田中|1月|490
田中|3月|480
田中|7月|400
田中|9月|441
田中|11月|477
佐藤と田中のベスト3の点数を↓ように出力させたいんです。
max(点数)で1番の点数を表示させるのはできたんですが、
2番3番が上手くいきません。
名前|1番|2番|3番
----------------
佐藤|645|598|584
田中|490|480|477
バージョンはMySQL5.0です。
616 = :
2つのクエリで、php等でループさせれば出来ますね。
クエリ1
select distinct 名前 from table A;
クエリ2
select score from table A where 名前 = クエリ1 order by score DESC limit 3;
1つのクエリでも出来るんでしょうね。私はやり方知らないけど・・・orz
617 = :
>>615
なんか・・できたっぽい・・ちょっと乱雑ですが・・・
select distinct tableA.name, max(a.score), b.score, c.score
from tableA left join tableA as a on(tableA.name = a.name) left join tableA as b on(tableA.name = b.name) left join tableA as c on(tableA.name = c.name)
where b.score = (select score from tableA where b.name = tableA.name order by score desc limit 1,1) and c.score = (select score from tableA where c.name = tableA.name order by score desc limit 2,1)
group by tableA.name;
tableAはテーブル名に置き換えて、nameは名前に・・scoreは点数です。
618 = :
>>611
GPL汚染って理解していないんじゃないかな。
GPLライセンスでも利用する自由はある。
ただ改造したりリンクするプログラムを
つくったらソースを公開する義務が
発生するだけ。ライセンスをもっと勉強
しようよ。
619 = :
>>617
すごい、できました。
ありがとうございます。
でも、できれば↓のように2回しかテストを受けていない人がいる場合、
NULLもしくは空白になるようにお願いしたいんです。
鈴木|3月|684
鈴木|11月|677
(出力)
名前|1番|2番|3番
----------------
佐藤|645|598|584
田中|490|480|477
鈴木|684|677|NULL
620 :
>>619
IF文かなにか使えば出来ると思います。
IF文 MYSQLで検索
ここから先は自分で頑張って見てちょ
検索+研究が一番身につくよ…がんばって
622 = :
体裁をちょっと間違ったので再掲。
select
A.NAME as NAME,
max(A.SCORE) as SCORE_1,
max(B.SCORE) as SCORE_2,
max(C.SCORE) as SCORE_3
from
SCORE as A
left join SCORE as B on A.NAME = B.NAME and A.SCORE > B.SCORE
left join SCORE as C on B.NAME = C.NAME and B.SCORE > C.SCORE
group by A.NAME
623 = 620 :
>>622
それだとスコアが100点を2回取った人が一回しか表示されなくないですか?
624 = :
そう言う仕様なら。
select
A.NAME as NAME,
max(A.SCORE) as SCORE_1,
max(B.SCORE) as SCORE_2,
max(C.SCORE) as SCORE_3
from
SCORE as A
left join SCORE as B on
A.NAME = B.NAME and
A.MONTH != B.MONTH and
A.SCORE >= B.SCORE
left join SCORE as C on
B.NAME = C.NAME and
A.MONTH != C.MONTH and
B.MONTH != C.MONTH and
B.SCORE >= C.SCORE
group by
A.NAME
625 = :
>>624
なるほど・・・それにしてもきれいな書き方ですね。
join構文で条件を複数指定出来るって知りませんでした。
勉強になりました。
627 = :
MySQLのスレで聞いたって答えは決まってるだろう
630 = :
SELECT * FROM table WHERE C = 1;
のようにC が 1を全部参照できるのはいいのですが
これをあえて、C = ALL みたいにして、
SELECT * FROM table
と同じ振舞いをするようにしたいです。
そういった方法があればよろしくおねがいします。
631 = :
C = C
632 = :
>>631
なんと!
それでできるのですか
さっそく試して見ます!!
634 = :
>>631,633
なるほど、一応null値は入れないデータなので、
今やってみたところ思い通りの操作ができました
ありがとうございました!
636 = :
C = までは確定なんでしょう。
インジェクションの的だけどな。
637 = :
http://www.youtube.com/watch?v=zog4rxsVWrQ&fmt=18
638 = :
>>629
MySQL Workbenchの商用版、稼働中のMySQLサーバに直接接続しての
リバース/フォーワードエンジニアリングや同期ができるのって
やっぱりsql文を経由して同期するよりも便利・ミスが少ないかなあ
って思いました。それが理由で購入するってのもありですよね?
639 = :
そりゃもちろんありですよ
ER/Winとかより遥かに安いしね
いまのところ日本法人のサポートが
超優秀なのも加点ポイント
641 = :
>>612
レスが遅れましたがアドバイスありがとうございます
テーブルやカラムにはcharsetを指定していませんがデータベースのcharsetをcp932に指定しています。
「select column_name,character_set_name from information_schema.columns」を実行すると
カラムのcharcter_set_nameにはcp932が設定されています
select hex(カラム名) from テーブル名も試してみていますがcp932(シフトJIS)で格納されています。
説明不足でしたが、mysqlの起動時に--t=hogeを指定しsqlの実行結果をテキストファイル
に落とすときちんと出力されているんです。
例えばデータが「あいうえお」だとテキストファイルには「あいうえお」と出力されているのですが
コマンドプロンプトの画面には「、ヲィ」と表示されるのです。
あいうえおはシフトJISだと82a0・82a2・82a4・82a6・82a8ですが
2バイト文字として認識されず2バイト目の文字だけが表示されているようです。
もう少し調べてみますが心当たりがあれば教えていただけると助かります。
642 = :
641です
mysqlをバージョンダウン(5.1.30→5.0.77)したところ日本語の文字化けが直りました。
5.1.30はOSをXPにしても同じ現象が発生するのでmysqlのバグかもしれません。
アドバイスを頂いた方、ありがとうございました。
643 = :
これかなあ?
http://bugs.mysql.com/bug.php?id=36279
644 = :
phpMyAdmin使ってる人・・・
Googleでログインされた状態のページが検索結果に出てるって知ってた?
これ・・セキュリティー上かなりヤバいので、自分のサイトが載ってないかチェックをお勧め
Googleで下記を入力して検索
intitle:phpMyAdmin "Welcome to phpMyAdmin***" "running on * as root@*""
くれぐれもいたずらはしないように!!!
645 = :
2つのテーブルからデータをとる場合でどちらかのテーブルに該当するレコードがあったら返してほしいのですが、どちらが空の時返してくれません。
left join だとleftのテーブルにない場合(rightには該当レコードあり)空が帰ってきます。
select name from dog left join cat on where dog.category = cat.category and sex = 1
where dog.category = 1;
どちらかが空でないときカラムをかえしてもらうにはどうかけばいいでしょうか?
646 = :
切ないことにMySQLではFULL OUTER JOINがサポートされていない。
なのでLEFT OUTER JOINで書いたクエリとRIGHT OUTER JOINで
書いたクエリをUNIONするしかない。二度手間。
今も昔も標準SQLのサポートが半端なMySQLを選んだ我が身の不幸
を恨むがよい~
あとJOINをする必要(結果テーブルの中でdogのカラムとcatのカラム
を横に並べる必要)は本当にあるのかな?
単にdogテーブルとcatテーブルからcategoryが指定値の行を検索
するだけで良いのであれば単にUNIONするだけで良いと思う。
647 = :
mysqlツールで何がお勧めですか?
見やすくてできれば日本語でわかりやすいものがいいんですが
648 = :
>>645
テーブルをサンプルとして例を挙げないと、何をしようとしているか分かりづらい
構文は色々な書き方があるから、やり方はあるはずだよ
みんなの評価 : ☆
類似してるかもしれないスレッド
- MySQL 総合 Part12 (1001) - [94%] - 2008/1/30 17:34 ○
- MySQL 総合 Part25 (947) - [94%] - 2017/6/18 6:30
- MySQL 総合 Part13 (996) - [94%] - 2008/6/10 21:02 ☆
- MySQL 総合 Part14 (1001) - [94%] - 2008/11/23 10:17 ☆
- MySQL 総合 Part17 (1001) - [94%] - 2010/6/10 20:47 ○
- MySQL 総合 Part18 (986) - [94%] - 2011/1/17 15:46
- MySQL 総合 Part19 (982) - [94%] - 2011/6/9 2:33
- MySQL 総合 Part26 (860) - [89%] - 2023/2/2 9:30
- MySQL 総合 Part20 (995) - [89%] - 2011/10/17 4:48
- MySQL 総合 Part21 (1001) - [89%] - 2011/12/25 22:16
- MySQL 総合 Part22 (1001) - [89%] - 2012/7/10 16:45
- MySQL 総合 Part23 (992) - [89%] - 2013/8/11 17:00
- MySQL 総合 Part24 (1010) - [89%] - 2015/2/14 4:46
- MySQL vs PostgreSQL Part2 (941) - [31%] - 2022/5/26 1:30 ○
トップメニューへ / →のくす牧場書庫について