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 九郎 というテーブルがあるとする。 select * from users; とすれば、 id 1 2 3 4 5 6 7 8 9 という一覧が返ってくる select * from users order by field(id, 4,5,6); とすると id 1 2 3 7 8 9 4 5 6 という結果が返ってくる。 なぜか、fie ...

MySQL, SQL

MySQL で ビットマスク を扱う

MySQL, SQL

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

MySQL, SQL

MySQLにはmysqldumpというダンプツールがあるが、CSVファイルでデータを出力できると、加工もしやすい。 また、CSV出力時には基本、SQL構文での出力となるため、条件指定も容易になる。 書き方としては SELECT * FROM areas ORDER BY id INTO OUTFILE "/home/user/areas.csv" FIELDS TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED B ...

MySQL, SQL

MySQLでユーザを削除する手順 権限を削除 REVOKEで、削除したいユーザの権限を削除する REVOKE構文について REVOKE priv_type ...] ON {テーブル名 | * | *.* | データベース名.*} FROM ユーザ名 参考に、guestユーザの権限を削除する実際の構文は REVOKE all on *.* from guest; ユーザを削除 DROP USER guest;