たとえば"field1"でレコードが重複しているので、一つを残してその他を削除したいときの手順。
1.field1をグループ化して、重複データを1つにまとめる。その状態のテーブルをコピー。
//グループ化してcopy_tableという名前のテーブルを作った。
CREATE TABLE copy_table as SELECT * FROM main_table GROUP BY field1
2.メインテーブルを削除。(くれぐれも自己責任で!)
DROP TABLE main_table
3.コピーしたテーブルをメインテーブルにリネーム。
ALTER TABLE copy_table RENAME TO main_table
カテゴリー:mysql
UWSCで正規表現を使うには、VBScriptを利用する必要がある。
aaa,bbb,ccc,ddd
↑文字列最後、dddの後ろの「,」だけを消したい場合の記述は次のとおり。
--------------------------------------------------------
moji = "aaa,bbb,ccc,ddd,"
re=CreateOleObj("VBScript.RegExp")
re.pattern = ",$" //パターン。$は行末の意味。文字列最後の「,」を指定している。
re.Global = True //文字列全体を検索。trueでする(規定)、falseでしない(マッチしたらそこで終了)。
re.IgnoreCase = True //大文字・小文字を区別。trueでしない(規定)、falseでする。
moji = re.Replace(moji,"") //指定の文字を空文字に置き換えて削除。
print moji
--------------------------------------------------------
出力結果:aaa,bbb,ccc,ddd
カテゴリー:uwsc
$(this).attr("checked"); ← これが効かない
次のいずれかにして解決。
$(this).prop("checked");
$(this).get(0).checked;
カテゴリー:JQUERY
すでに内容のあるカラムに文字列を追記するには、「concat」を使う。
以下のとおり。
UPDATE テーブル名 SET 追加先のカラム = concat(追加先のカラム, '追加したい文字列');
ちなみに、追加先のカラムが「null」の状態だと追記されません。
カテゴリー:mysql
親ドメインのセッション情報が、サブドメインに引き継がれないのは、クッキーの有効範囲にサブドメインが含まれていないため。(IEだとOKなのに、safariやfirefoxだとNGになるものこのケースが当てはまる)
サブドメインにもセッション情報を引き続きたい場合は、一番最初にクッキーを作る段階で「サブドメインにも有効なクッキー」を作る必要がある。
やり方は、クッキーが作られるドメインのphp.iniに次の記述をすればいい。
session.cookie_domain = ".example.com"
この記述があるphp.iniファイルのドメイン下で作られたクッキーは、すべてのサブドメインでも有効になる。ドメイン先頭のドット「.」を忘れないように。
あと、動作確認をするときは、必ずクッキーをクリアしてから行うこと。ログアウト→再ログインとかでは不十分。
カテゴリー:PHP
UWSCを使って、IEを自動で更新させたいなら次のように記述すれば良い
IE = GETACTIVEOLEOBJ("InternetExplorer.Application","yahoo")
IE.Refresh //更新 F5を押したときと一緒
もしくは
IE.document.location.replace(IE.document.location.href)//今開いているページのURLに再アクセス
更新をするとページによっては
「情報を再び送信しますが更新してよろしいですか?」
的なダイアログが出るときがある。これは「F5 更新」の場合に出現する可能性が高いので、回避したいなら
IE.document.location.replace(IE.document.location.href)
こっちを試すと良い
カテゴリー:uwsc
複数のテーブルのデータを一つのテーブルにinsertで追加、まとめるsql
INSERT INTO table_name (column1,column2) SELECT column1,column2 from table_name2;
データが追加される側のカラムとデータを参照するカラムの構造は同じにしてください。
カテゴリー:mysql
すでにあるカラムにユニークキーやプライマルキーを追加するには次のSQL文を実行すればいい。
プライマルキーなら、
mysql> ALTER TABLE テーブル名 ADD PRIMARY KEY (カラム名);
ユニークキーなら、
mysql> ALTER TABLE テーブル名 ADD UNIQUE (カラム名);
もし、
ERROR 1170 (42000): BLOB/TEXT column 'text_field' used in key specification without a key length
のようなエラーが出たら、キーの長さを指定する必要があるので、
プライマルキーなら、
mysql> ALTER TABLE テーブル名 ADD PRIMARY KEY (カラム名(255以下のキーの長さ));
ユニークキーなら、
mysql> ALTER TABLE テーブル名 ADD UNIQUE (カラム名(255以下のキーの長さ));
こう記述するとエラーにならないはず。
しかし カラムが utf8mb4(一文字4バイト) の物に対してキーの長さを 255 にするとエラーが出る。
Specified key was too long; max key length is 767 bytes
(索引のキーが長すぎます。最大 767 バイトまでです。)
この場合、キー長さを 191 以下に下げればいい。
ALTER TABLE テーブル名 ADD PRIMARY KEY (カラム名(191));
4byte × 191 = 764byte
767byte 以内に収まる。
カテゴリー:mysql
自作関数名は strpos_array
strposと同じように使える。検索文字が配列であっても、なくても利用できる。
function strpos_array($haystack, $needles) {
if ( is_array($needles) ) {
foreach ($needles as $str) {
if ( is_array($str) ) {
$pos = strpos_array($haystack, $str);
} else {
$pos = strpos($haystack, $str);
}
if ($pos !== FALSE) {
return $pos;
} else {
return FALSE;
}
}
} else {
return strpos($haystack, $needles);
}
}
カテゴリー:PHP
mysqlで3つのテーブルをリレーションしたいときは次のように書く
SELECT * FROM table1 INNER JOIN table2 ON table1.id = table2.id INNER JOIN table3 ON table1.id = table3.id;
条件で絞りたいなら最後にWHEREをつける
SELECT * FROM table1 INNER JOIN table2 ON table1.id = table2.id INNER JOIN table3 ON table1.id = table3.id WHERE ~~;
カテゴリー:mysql