のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,644,792人
昨日:no data人
今日:
最近の注目
人気の最安値情報

元スレMySQL 総合 Part15

mysql覧 / PC版 /
スレッド評価: スレッド評価について
みんなの評価 :
タグ : - insertall + - mregexp + - SSD + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter

651 = :

>>650
仰る通り、sqlplusの機能でした。すみません。
該当コマンドはなさそうですか。

ありがとうございました。

652 = :

得られた行セットに対して1から通し番号を付加するにはどうしたらいいですか?
id value
a 100
b 200
c 300
d 400
に対してwhere value >= 300して
c 1
d 2
のような結果がほしい感じです

653 = :

順位をつけるってことか?
だったら自己結合使えば

655 = :

年じゃなくて年度で入れる

656 = :

>>655
ありがとうございます。

まず月だけ抜き取って3以下なら無理やり年を前年に書き換える形で対応できました。

658 = :

MySQL5.1.32ですが、おもにphpmyadminでの操作ですが
テーブルT1のid(INT)に一気に1から500までの数字を入れる方法を
教えてください。

663 = :

>>658です。
すんませんコピペ間違いでした。
SET @a =0;
INSERT INTO T4 (p_id,id,res_time,flag,time_stamp)
SELECT p_id, (@a := @a +1) as id,res_time,flag,time_stamp
FROM T4 WHERE p_id <=500;
「SQL は正常に実行されました」
「戻り値は0でした」というメッセージがでます。

664 = :

オートインクリメントなら別にいらなくね?

666 = :

やりたいことがさっぱりわからん
500レコードはすでに入っていて、id列だけを更新するってこと?

668 = :

元が0件だったら
INSERT INTO T4 SELECT FROM T4
したって何も起こらないでしょう?

で、phpMyAdminと10分ほど戯れたけどちょっと無理だと思った。

ストアド作ってphpMyAdminから叩くか、
元データ用意してLOAD DATA INFILEするか、
普通にプログラム書いてINSERTするか
だと思う

669 = :

あるフィールド(INT型で同じものはない)に、
1、2、3、5、6…というようにレコードがあるのですが、
その中でぬけている一番小さい整数、ここでは、4になりますが、
これを見つけるのに効率のよい方法はどのようなものがあるでしょうか。

接続型アクセスでやっているので、1から順にループさせると、数が多く
なったときに大変だ と思いまして…。

670 = :

set @a = 0;
select val from (select @a := @a + 1 val, id from tbl order by id) tbl_v where val != id limit 1;

あまり自信はないけど

671 = :

>>669
自分自身と差分取ればいいよ
SELECT chiko+1 FROM unko WHERE chiko NOT IN (SELECT chinko-1 FROM unko) LIMIT 1;

672 = :

select
 min(R.VAL) + 1
from
 (select VAL from T
  union select 0 as VAL from dual) R
where
 not exists (
  select * from T S
  where S.VAL = R.VAL + 1
 )
and
 R.VAL != (select max(VAL) from T)

FROM句のサブクエリーのunion以降は(整数列の開始値-1)。
例えば開始値が0なら「union select -1 as VAL from dual」とする。
開始値関係なく単に整数列の歯抜けをチェックしたいのならfrom句の
サブクエリーは取っ払ってfrom T Rとすればよい。
調べたいカラムにはindexはっとくように。

673 = :

ありがとうございます。
やはり、こういう事を思いつくというのは、経験でしょうか…。

これから、実験してみます。

674 = :

カラムa, b, cが重複しているレコードを自分自身のテーブルから見つけるにはどうすればいいか教えて下さい

675 = :

各ユーザーにアクセスするホストを追加しようと思っているのですが、
各ユーザーのパスワードがわからないためどうしようか迷っています。
IP帯とかではなく、IPだけを増やしたいんですが、良い方法はないでしょうか。

mysql.user内のユーザーをコピーして、ipアドレスを変更して追加し、
mysql.db内にも同様にipアドレスを変更したものを追加してみたのですが、
うまくいきません。

ユーザーをダミーのパスワードで追加し(grantコマンド)、パスワードの部分を前のIPのものに変更
すると大丈夫なのですが、上記の二つのテーブルを変更しただけじゃだめなんでしょうか?

flush privileges; はやっています。

676 = :

>>674
select a, b, c from table_name group by a, b, c having count(a) > 1;

677 = :

>>675
そんなはずないだろうと思って試してみたら、フツーにできたよ。
mysql.userのレコード追加とflush privilegesで接続確認できた。
もちろんmysql.dbにレコードないと、information_schemaとtestしか参照できないけど。

679 = :

>>668
>>658です。
ストアドしてみました。結果phpMyAdminから実行できました。

//500レコード作成
DELIMITER $$
DROP PROCEDURE IF EXISTS display$$
CREATE PROCEDURE CreateNo(no int)
BEGIN
DECLARE counter INT DEFAULT 0;
simple_loop: LOOP
SET counter=counter+1;
INSERT INTO T4 (id) VALUES(counter);
IF counter=no THEN
LEAVE simple_loop;
END IF;
END LOOP simple_loop;
END$$
DELIMITER ;
call CreateNo(500);

//削除
TRUNCATE table T4;

680 = :

>>658
やればできる子だったのか
ちょっと感心した

681 = :

>>680
>>658です。
遠回りばかりしていますが
がんばります。
よろしくおねがいします。

684 = :

トランザクションの解説書に出てきそうなくらいの典型例すぎる…。
俺ら試されてるのかとも思ったぞw

688 = :

トランザクション使うと、インサートの速度はどの位落ちますかね?

innodbの時点で比べ物にならないんじゃ無いかと思って
避けてしまっている自分がいます…

689 = :

測ればいいじゃん

691 = :

チューニングも何も、ある程度の量以上なら普通にトランザクションのが速い

692 = :

688ですが、多分僕が気にしすぎなんでしょうね。
今度テストでもしてみます。
ありがとうございました。

693 = :

なんか初めてっぽい人ほど変なところで速度を気にする傾向が
ある気がする。>>688もそうだし初めてのスキーマ設計っぽいのに
ジョインすると速度が遅くなるから云々いう人とか。

素人考えで下手に小細工を試みるよりはまずちゃんと正規化もして
トランザクション等DBに備わる標準的な機能を使って実装した方が
とりあえず速度は出る。そういう風にRDBMSは設計されている。
パフォーマンスチューニングはその後に心配した方がよい。

694 = :

>>693
確かにそうですよね。
大体webの場合、そこまでパフーマンスが問題になる事は稀ですしね。

697 = :

質問です。
PHP+MySQLでタグ検索実装を考えています。

blogテーブル内のtagsというキーに、以下のような文字列データを格納しています。

1: PHP,MySQL
2: PHP5,CakePHP
3: PHP,Smarty

ここで、「PHP」で検索したときは、完全一致する1と3だけが返ってくるようにしたいのです。
処理をPHPに任せれば、正規表現等で行けると思うのですが、スマートにMySQLだけで処理できればと考えています。

どなたかよろしくお願いします。

698 = :

>>697
正規化

699 :

自宅鯖と開発マシンがあるんだけど
鯖にあるDBのレコードに開発マシンにあるレコードを加えたい。
重複しているレコードは入れずに、開発マシンにだけ入っているレコード移したいんですが
どうやるのが一番簡単ですか?

ようするに双方のレコード足したいんですけど。

700 = :

>>699
primaryで重複しているなら、単にINSERTすればいいかと


←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / mysql一覧へ
スレッド評価: スレッド評価について
みんなの評価 :
タグ : - insertall + - mregexp + - SSD + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

類似してるかもしれないスレッド


トップメニューへ / →のくす牧場書庫について