SQLite で抽出データを並び替え
SELECT * FROM テーブル名 ORDER BY フィールド1 DESC, フィールド2 DESC, フィールド3 ASC ;
上記のようにすることで、「テーブル名」という名前のテーブルの全てのデータを「フィールド1」の降順で並べ、「フィールド1」が同値の場合、次の「フィールド2」を降順に並べ、さらに「フィールド2」も同値の場合、「フィールド3」を基準に昇順に並び替えます。
ASC は結果が昇順に並びかえ、 DESC はそれが降順に並ぶかえることを表します。そのどちらも指定されていない場合、 ASC で並び替えられます。
SQLite でランダムにデータを抽出する
まず、SQLite でランダムにデータを取り出す方法
SELECT * FROM entry ORDER BY RANDOM();
SQLite で行数指定(LIMIT)でデータを抽出する
SELECT文では、WHERE句などを指定した場合でも条件に一致する全てのデータを取得します。この取得する件数を制限したい場合にはLIMIT句を使います。書式は以下の通りです。
SELECT カラム名, ... FROM テーブル名 LIMIT 行数;
…
こんなことが起こってはいけないのですが、、、、
昨日、サーバでsudo関連のプログラムをfedoraサーバでテストしてたのですが、その際に、誤って、想定してないような値を渡してしまい、サーバ上のディレクトリやファイルのパーミッションがおかしなことになってしまいました。
rootでもログイン出来なくなってしまい、全てがおかしくなったのか、部分的におかしくなったのかも把握できず、とりあえず、初期化するしかないかなと思いつつも、調べて、調べて、試行錯誤してました。
そんな状況で、どうにかこうにか /var/lib/mysql 内のデータをFTP経由で抜き出しました。
それだけでは、DBのバックアップは出来ないだろうなと思いつつも、違うサーバ上の同じ場所(/var/lib/mysql)に置いてみると、普通にphpmyadminでデータが読み込まれました。
ただ、この状態では、データの参照は出来るものの、phpmyadmin上からデータの編集、削除や、phpプログラムからデータを追加することも出来ない状態でした。(read onlyというエラーが出ます)
これではあまり意味がないので、また試行錯誤していました。
新しいサーバ上のphpmyadminから参照しか出来ないread onlyのDBエクスポートし、/var/lib/mysql から、さきほど置いた古いDB(old_db)のディレクトリを削除。
この時点で、新しいphpmyadmin上には、古いDB(old_db)の情報はなくなっています。
その状態で、新しいサーバに古いDBと同じ名前(old_db)のDBを作り、エクスポートしておいた、ものをインポートすると、編集や削除も出来る状態で、新しいphpmyadminに移行することが出来ました。
phpプログラムからのデータの追加や削除なども出来ました。
朝から夜までずっと調べて、試して、丸一日かけて、やっと辿り着きました・・・。
今回は、DBのバックアップなどをしてなかったので、こんな状況になりましたが、普段からDBをしっかりバックアップしておけば、良いだけ、、という普通の教訓を得ました(_ _。)・・・シュン
graffiti on the web
この投稿へのコメント
コメントはまだありません。