ホーム > タグ > MySQL
MySQL
さくらのMySQLを4.0=>5.1に
- 2009-06-22 (月)
- 備忘録
さくらのMySQLを4.0から5.1に変更した時の個人的なメモです。
なんとなく書いてますので、参考にしないで下さい。
- Comments: 0
- Trackbacks: 0
自己結合っていうの?
- 2008-10-09 (木)
- 備忘録
セレクトで苦労したのでメモ。
抽出したいのは、field1に入っている日付系のデータを、 idごとで分けた、最大のデータ、且つ、今日以前のデータ。 idとfield1がpkです。
SELECT * FROM testTb AS x WHERE x.field1 = (SELECT MAX(field1) FROM testTb WHERE x.id = id AND field1 <= now() )
半ば消化不良ですが、どうやら、外のテーブル(x.testTb)のidと中のテーブル(testTb)のidを サブクエリの中で対比させることによって、id分のMAXの値を抽出できるらしい。 ループしてるイメージでしょうか?それともグループ化?
ちなみに最後の、AND field1 <= now()を外に出すと動きません。
参考サイト:http://q.hatena.ne.jp/mobile/1213899211
- Comments: 0
- Trackbacks: 0
INSTR でフィールドの文字列検索
- 2008-09-02 (火)
- 備忘録
フィールドに、’1,2,3′なんて文字列が格納されている場合、 ’1′とか’2′とかの単体の検索を複数一気にかけたい場合、
select * from テーブル名 where INSTR(フィールド名,’1′) and INSTR(フィールド名,’2′);
これで。
- Comments: 0
- Trackbacks: 0
LEFT JOIN時のWHERE文
- 2008-08-06 (水)
- 備忘録
MySQL文で、LEFT JOINを使用すると、指定したフィールドを条件にテーブルを結合してくれるが、その際にWHERE文で動きが特殊なので記載しときます。
例えば、こんな文。 SELECT * FROM?tb1 LEFT JOIN?tb2?ON?tb1.id = tb2.id WHERE tb2.name = NULL;
この場合、結合したテーブル tb2 のnameフィールドがNULLの場合、情報を呼び出す感じになっているが、実際データとして、NULLが入っていないと、抽出されるデータは存在しない状態になってしまう。
それでは困るのでなんとかならないか検索したところ、グッドな関数を発見。
IFNULL ってやつです。
これを使うとこんな感じ。 SELECT * FROM?tb1 LEFT JOIN tb2 ON?tb1.id = tb2.id WHERE IFNULL(tb2.name,0) = ’0′;
要は、NULLの場合、第二引数に指定している0に置き換えてやり、その置き換えたものをWHERE文で判断している形になります。
- Comments: 0
- Trackbacks: 0
INでまとめる
- 2008-08-03 (日)
- 備忘録
INを用いる事で、SQL文がひとまとまりにできます。
例えば、 UPDATE テーブル名 SET del_flag = ’1′ WHERE id = ’1′; UPDATE テーブル名 SET del_flag = ’1′ WHERE id = ’2′; UPDATE テーブル名 SET del_flag = ’1′ WHERE id = ’3′; と三つの文を書かなければならないところを、
UPDATE テーブル名 SET del_flag = ’1′ WHERE id IN (’1′,’2′,’3′);
とする事で、ひとまとまりの文にできます
- Comments: 0
- Trackbacks: 0
SELECT:テーブルからレコードを抽出
- 2008-06-20 (金)
- 備忘録
select * from テーブル名 order by フィールド名 desc; →フィールド名で降順出力。
select count(*) as 任意フィールド名 from テーブル名 where フィールド名 like ‘%条件%’; →あるフィールドの条件を含むレコードの数をカウント。
- Comments: 0
- Trackbacks: 0
UPDATE:レコードの値を更新する
- 2008-06-20 (金)
- 備忘録
update テーブル名 set フィールド名 = 新しい値;
→全レコードの「フィールド名」のフィールドを「新しい値」にする。
update テーブル名 set フィールド名 = 新しい値 where 条件;
→条件で指定したレコードの値を更新。
update テーブル名 set フィールド名 = 新しい値 , フィールド名 = 新しい値;
※複数のフィールドを更新したい場合はコンマで区切る。
update テーブル名 set フィールド名 = 新しい値 where 条件フィールド名 in (‘フィールド名1′,’フィールド名2′,’フィールド名3′);
※複数のレコードの同じフィールドへ、同じ値を入力する。
- Comments: 0
- Trackbacks: 0
DELETE:レコードを削除する
- 2008-06-20 (金)
- 備忘録
delete from テーブル名;
→テーブルのすべてのレコードを削除。
delete from テーブル名 where 条件;
→条件で指定したレコードを削除。
- Comments: 0
- Trackbacks: 0
DROP:テーブルやデータベースを廃棄する
- 2008-06-20 (金)
- 備忘録
drop table テーブル名;
drop databese データベース名;
- Comments: 0
- Trackbacks: 0
ALTER:テーブルの構造を修正
- 2008-06-20 (金)
- 備忘録
alter table テーブル名 change 旧フィールド名 新フィールド名 データ型;
→フィールド名を修正する。
alter table テーブル名 modify フィールド名 新しいデータ型;
→フィールドのデータ型を修正する。
alter table テーブル名 add 追加するフィールド名 データ型;
→フィールドを追加する。
- Comments: 0
- Trackbacks: 0
Home > Tags > MySQL
- Search
- Banner
- Feeds
- Meta