mysql order by のNULLについて
テーブル tb1
memberid 2 2
cardid 1 1
name 田中 井岡
day 2016.4.10 2016.4.22
new New NULL
ソース
SELECT memberid,cardid,max(name),max(day),max(new)
FROM tb1 WHERE memberid=2
GROUP BY cardid ORDER BY max(day) DESC LIMIT '.$limit.' OFFSET '.$offset;
すると max(new)の部分が Newと出てきます。
max(new)なのでNULLが出てくると思っていました。
NULLにしたいのですが
名前も井岡ではなく田中がでてきます
max(day)をオーダーしているので新しい日の情報が出てくると思っていましたが。。。。
何か SQLの書き方に問題があるのでしょうか それともこのテーブルの作りでは不可能なのでしょうか?
無知な私に
ご教授お願いいたします。
例えば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」と命名してそのテーブルに対してグルーピングをかけています。
お礼
できました!! 私の説明がわかりにくく申し訳ないです しかし それをご理解していただき迅速に回答してくださって誠に ありがとうございました。