- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:mysql order by のNULLについて)
MySQLのorder byのNULLについて
このQ&Aのポイント
- テーブルtb1で、memberidが2の場合にcardidをグループ化し、最新の情報を取得するクエリを実行しています。
- しかし、max(new)の部分でNULLではなくNewと表示されています。
- また、max(day)をorder byしているので、新しい日の情報を取得できると思っていましたが、田中の情報が表示されます。SQLの書き方に問題があるのでしょうか?
- みんなの回答 (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」と命名してそのテーブルに対してグルーピングをかけています。
その他の回答 (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) これでいかがですか?
質問者
お礼
回答ありがとうございます。 無事解決いたしました。 これからもよろしくおねがいいたします。
- kreikg
- ベストアンサー率39% (21/53)
回答No.1
そのSQLで何を出したいのかがよくわからないのですが、一番新しいdayを持った1件のデータを取得したいのですか? それなら下記ででませんか? SELECT * FROM tb1 ORDER BY day DESC LIMIT 1
質問者
お礼
早速の回答ありがとうございます! ほかにもデータがはいっておりまして memberid 5 cardid 1など たくさん組み合わせがありまして それらのグループ化した 最大のdayのデータを表示したい次第です。
お礼
できました!! 私の説明がわかりにくく申し訳ないです しかし それをご理解していただき迅速に回答してくださって誠に ありがとうございました。