●テーブル情報
create table sample (
no int NOT NULL auto_increment,
data varchar(16),
time timestamp NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
PRIMARY KEY (no)
);
●動作結果
INSERT INTO sample (data) VALUE ("***")
no data time
------------------------------
1 "test1" 2012-05-02 17:26:03
2 "test2" 2012-05-02 17:26:03
3 "test3" 2012-05-02 17:28:26
4 "test4" 2012-05-03 13:30:42
●質問事項
上記DBからdataを以下の順序で取り出したいのですが、よい方法が思いつきません。
条件1) 時刻(time)の新しい順
条件2) 時刻(time)が同じであれば、noの小さい順
「動作結果」の場合、下の順序で取り出しできることが期待値です。
no data time
------------------------------
4 "test4" 2012-05-03 13:30:42
1 "test1" 2012-05-02 17:26:03
2 "test2" 2012-05-02 17:26:03
3 "test3" 2012-05-02 17:28:26
これをmySQLの文法だけでなんとかできないかというのが質問です。
たとえば以下の方法だと、期待値となりません。
SELECT data FROM sample ORDER BY time DESC, no
no data time
------------------------------
4 "test4" 2012-05-03 13:30:42
1 "test1" 2012-05-02 17:26:03
2 "test2" 2012-05-02 17:26:03
3 "test3" 2012-05-02 17:28:26
よろしくお願いいたします。
質問の文面だと、「期待値」と「期待通りになりません」が同じ並びになってますが、
4 → 3 → 1 → 2 の順で取りだしたい、ということですよね。
http://sqlfiddle.com/#!2/aa68b/1
↑は、SQL Fiddle というサイトで試した結果です。
選択列を data から * に変えただけですが、期待通りの結果になってるように思えます。
質問の文面だと、「期待値」と「期待通りになりません」が同じ並びになってますが、
4 → 3 → 1 → 2 の順で取りだしたい、ということですよね。
http://sqlfiddle.com/#!2/aa68b/1
↑は、SQL Fiddle というサイトで試した結果です。
選択列を data から * に変えただけですが、期待通りの結果になってるように思えます。
ご回答ありがとうございます。
> 「期待値」と「期待通りになりません」が同じ並びになってますが、
「期待とおりになりません」の例が誤記です。大変申し訳ありません。
> 4 → 3 → 1 → 2 の順で取りだしたい、ということですよね。
取り出したい順序は、4→1→2→3です。
いろいろご丁寧に対応いただいて恐縮ですが、再度のご教授をお願いいたします。
自己解決しましたので、これで質問を終了させていただきます。
みなさま、ありがとうございました。
time って 年月も含んでませんか?
2012-05-03 13:30:42
これ自体が timeなら 期待値どおりには ならないですね。
ご回答ありがとうございます。
No.1さんのご指摘通り、「期待とおりになりません」の例が私の誤記です。大変申し訳ありません。
取り出したい順序は、4→1→2→3です。
timeの型がtimestampなのですが、これではORDERBYできないということでしょうか?ちょっと調べてみます。ありがとうございました。
timestamp で 日付も含まれてる?
ご回答ありがとうございます。
2012/05/03 15:04:19> 「期待値」と「期待通りになりません」が同じ並びになってますが、
「期待とおりになりません」の例が誤記です。大変申し訳ありません。
> 4 → 3 → 1 → 2 の順で取りだしたい、ということですよね。
取り出したい順序は、4→1→2→3です。
いろいろご丁寧に対応いただいて恐縮ですが、再度のご教授をお願いいたします。
自己解決しましたので、これで質問を終了させていただきます。
2012/05/03 15:38:20みなさま、ありがとうございました。