技術忘備録 : SQLで order by 句を使ったときの挙動

3月 8th, 2011 · No Comments

SQL周りのコードを書いていたときに引っかかったネタ。

SELECT * FROM ( SELECT C1,C2 FROM T1
WHERE C3 = 'hoge' ORDER BY 'TIME'  DESC LIMIT 100 ) ORDER BY 'TIME' ASC;

こんな文を書いて
「T1に存在するレコードのうち、条件に合う物を時間をキーにして降順に最新から100個を抜き出した後、昇順に並べ直して時間順にする」
ということをしようと思っていたのですが、こう書くと[ORDER BY ‘TIME’ DESC]が無視されてしまうのです。

色々追っていくと原因はカラム名を囲っている「’」であることが判明。

SELECT * FROM ( SELECT C1,C2 FROM T1 
WHERE C3 = 'hoge' ORDER BY TIME  DESC LIMIT 100 ) ORDER BY TIME ASC;

こうすると動く。

Tags: SQL · 技術ログ · 更新

0 responses so far ↓

  • There are no comments yet...Kick things off by filling out the form below.

Leave a Comment