• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:mysql order by のNULLについて)

MySQLのorder byのNULLについて

このQ&Aのポイント
  • テーブルtb1で、memberidが2の場合にcardidをグループ化し、最新の情報を取得するクエリを実行しています。
  • しかし、max(new)の部分でNULLではなくNewと表示されています。
  • また、max(day)をorder byしているので、新しい日の情報を取得できると思っていましたが、田中の情報が表示されます。SQLの書き方に問題があるのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • kreikg
  • ベストアンサー率39% (21/53)
回答No.3

例えばmemberid=1 cardid=1の組み合わせのすべてのデータから最新のdayを持った1件、memberid=1 cardid=2の組み合わせのすべてのデータから最新のdayを持った1件など、それぞれの組み合わせの最新が1件ずつ欲しいということですか? SELECT * FROM (SELECT * FROM tb1 ORDER BY day DESC) tbl GROUP BY memberid,cardid これはFROMの後にSELECTがまたありますね。()の中で日付が大きい順に並べ替えたテーブルを作り、それを「tbl」と命名してそのテーブルに対してグルーピングをかけています。

a7a7a77a7a74
質問者

お礼

できました!! 私の説明がわかりにくく申し訳ないです しかし それをご理解していただき迅速に回答してくださって誠に ありがとうございました。

その他の回答 (2)

  • maiko0333
  • ベストアンサー率19% (839/4401)
回答No.2

select * from tb1 where (cardid,day) in ( select cardid,max(day) from tb1 where memberid=2 group by cardid) これでいかがですか?

a7a7a77a7a74
質問者

お礼

回答ありがとうございます。 無事解決いたしました。 これからもよろしくおねがいいたします。

  • kreikg
  • ベストアンサー率39% (21/53)
回答No.1

そのSQLで何を出したいのかがよくわからないのですが、一番新しいdayを持った1件のデータを取得したいのですか? それなら下記ででませんか? SELECT * FROM tb1 ORDER BY day DESC LIMIT 1

a7a7a77a7a74
質問者

お礼

早速の回答ありがとうございます! ほかにもデータがはいっておりまして memberid 5 cardid 1など たくさん組み合わせがありまして それらのグループ化した 最大のdayのデータを表示したい次第です。

関連するQ&A

専門家に質問してみよう