MySQL Tips †インクリメント処理 †ロックを取得する読み取り FOR UPDATE SELECT COUNTER_FIELD FROM CHILD_CODES FOR UPDATE; UPDATE CHILD_CODES SET COUNTER_FIELD = COUNTER_FIELD + 1; インクリメント処理のみであればUPDATE文のみで可能 UPDATE table_name SET count=count+1 WHERE id=1234 カラム型の数字指定 †カラムの型を int(10) と指定した場合の 10 は、「ZEROFILL」オプション指定時の桁数を明示的に指示していることを意味する。 SELECT FOUND_ROWS †SELECT SQL_CALC_FOUND_ROWS * FROM tbl_name WHERE id > 100 LIMIT 10; SELECT FOUND_ROWS(); SELECT FOUND_ROWS()は、直前の SELECT SQL_CALC_FOUND_ROWS 文を LIMIT 節なしで実行した場合に返されるレコード数をが返る。 FIND_IN_SET() †知っておくと便利なMySQL関数 "FIND_IN_SET" 非正規化テーブルで1カラムに複数の値がカンマ区切りで収納されている場合 SELECT * FROM table WHERE FIND_IN_SET('1', hoge_ids) ;
※ カラムに hoge_ids には 1,2,3,5,9' のように カンマ区切りの数値が格納 カラム hoge_ids に 1 か 10 が格納されている行を検索したい SELECT * FROM table WHERE FIND_IN_SET('1', hoge_ids) OR FIND_IN_SET('10', hoge_ids);
dfwLibだと以下のように使用します。 $test->setSql('SELECT * FROM ipmes WHERE FIND_IN_SET(:name, name)');
$test->set('name', '1');
var_dump($test->execFetchAll());
|