MySQL, SQL

ソート条件を付けない場合、以下のように出力されるテーブルでageがNULLのレコードは常に最下位にしてソートさせたい。 +----+---------+------+ | id | name | age | +----+---------+------+ | 1 | 名前1 | NULL | | 2 | 名前2 | 20 | | 3 | 名前3 | 30 | | 4 | 名前4 | 18 | | 5 | 名前5 | NULL | | 6 | 名前6 | 60 | +----+---------+ ...

MySQL, SQL

MySQLで任意の順番にソートをするにはfieldを使う id name 1 一郎 2 二郎 3 三郎 4 四郎 5 五郎 6 六郎 7 七郎 8 八郎 9 九郎 というテーブルがあるとする。 とすれば、 id 1 2 3 4 5 6 7 8 9 という一覧が返ってくる とすると id 1 2 3 7 8 9 4 5 6 という結果が返ってくる。 なぜか、fieldで指定していないIDが最初に表示され、最後にfieldで指定したレコードが順番に並ぶようだ。 希望としては 4,5,6が最初に表示さ ...

MySQL, SQL

MySQL で ビットマスク を扱う

MySQL, SQL

先ほど、仕事でなぜか違うデータが抽出されるんだけど…という不具合を報告され よくよく調査したら、 という条件を見つけた。 前任者は、2001_1001_202_100とか、2001_1001_202_の後にコードが付いたデータを抽出したかったのであろうが この条件だと2001_1001_2023というデータもヒットしてしまう。 これは、likeでは「_」は任意の一文字を意味する記号であるからである。 仕方が無いので、検索条件として使うコードの「_」をエスケープすることで解決した。 Ruby on ...

MySQL, SQL

MySQLにはmysqldumpというダンプツールがあるが、CSVファイルでデータを出力できると、加工もしやすい。 また、CSV出力時には基本、SQL構文での出力となるため、条件指定も容易になる。 書き方としては FIELDSオプション TERMINATED BY 項目の区切り文字を指定する ENCLOSED BY 項目を囲む文字(たとえばダブルクォーテーション) ESCAPED BY エスケープする文字を指定(¥マークが一般的) LINESオプション TERMINATED BY 行の末端記号( ...

MySQL, SQL

MySQLでユーザを削除する手順 権限を削除 REVOKEで、削除したいユーザの権限を削除する REVOKE構文について 参考に、guestユーザの権限を削除する実際の構文は ユーザを削除