【mysql】特定のフィールドで重複しているレコードを削除する

たとえば"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

uwscで正規表現を使う(文字列最後の「,」を削除する方法)

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

【JQUERY】チェックボックスの状態が取得できない【attr】【checked】

$(this).attr("checked"); ← これが効かない

次のいずれかにして解決。

$(this).prop("checked");
$(this).get(0).checked;

【mysql】 カラムに文字列を追記する方法

すでに内容のあるカラムに文字列を追記するには、「concat」を使う。
以下のとおり。

UPDATE テーブル名 SET 追加先のカラム = concat(追加先のカラム, '追加したい文字列');

ちなみに、追加先のカラムが「null」の状態だと追記されません。

【PHP】サブドメインに親ドメインのセッション情報を引き継ぐには

親ドメインのセッション情報が、サブドメインに引き継がれないのは、クッキーの有効範囲にサブドメインが含まれていないため。(IEだとOKなのに、safariやfirefoxだとNGになるものこのケースが当てはまる)

サブドメインにもセッション情報を引き続きたい場合は、一番最初にクッキーを作る段階で「サブドメインにも有効なクッキー」を作る必要がある。

やり方は、クッキーが作られるドメインのphp.iniに次の記述をすればいい。

session.cookie_domain = ".example.com"

この記述があるphp.iniファイルのドメイン下で作られたクッキーは、すべてのサブドメインでも有効になる。ドメイン先頭のドット「.」を忘れないように。

あと、動作確認をするときは、必ずクッキーをクリアしてから行うこと。ログアウト→再ログインとかでは不十分。

【UWSC】IEを自動で更新するスクリプト

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)

こっちを試すと良い

【mysql】複数のテーブルのデータをinsertで一つのテーブルにまとめる

複数のテーブルのデータを一つのテーブルに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以下のキーの長さ));

こう記述するとエラーにならないはず。

【PHP】strposで検索文字に配列を使うための自作関数

自作関数名は 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);
}
}

【mysql】3つのテーブルを結合する時の記述

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 ~~;

25 / 27« 先頭...1020...2324252627