カテゴリー別アーカイブ: SQL

DISTINCT+ORDER BY


 こういうことはできないということをようやく理解しました。DISTINCTの代わりにGROUP BYを使えば何とかなる様子。

SELECT DISTINCT c1,c2 FROM table ORDER BY c3;

 テーブルにもよりそうですが、たぶんエラー。

SELECT c1,c2 FROM table GROUP BY c1,c2 ORDER BY max(c3);

 これなら上の期待する結果が返る。max以外にも集計関数であれば問題なさそう。ここを普通にc3と書いてしまうと、「GROUP BYにc3がありません」というエラーになる。

 うーん、SQLについては分からないことが多すぎて何とも。テクニカルエンジニアのDBあたりを勉強すれば詳しくなれるだろうか。まだまだ使いこなすには時間かかりそう。

参考:http://okwave.jp/qa2828848.html

非常に単純なことなのかもしれないけど


 SQLでテーブルのデータを書き換えるにはUPDATEという構文があるけど、UPDATEを使わなくとも、一旦DELETEしてINSERTすれば同じなんじゃないか?コストはどう違うんだ?という疑問が浮かんだ。ほとんど1行まるまる書き換える場合だったら、DELETEしてINSERTする方がSQL文は短くてすむ気がする。本当はもっとうまいやり方があるのかもしれないけど。

 研究関係でDBをいじっててそんな疑問を持ちました。まあ実際実験して調べてみればいいのかもしれないけど、とりあえずいいかということで、UPDATE文を使って更新することにしました。そこを迷うよりも、早くモノを作らないとね。