アプリ版:「スタンプのみでお礼する」機能のリリースについて

mysql初心者です。

検索語句(search)で部分一致するものを、名前(name)と更新日(update)でユニーク指定し、修正日(time)が最新のものだけを表示させたいのですが、望む結果が得られません…。

 SELECT * FROM db WHERE name LIKE \"%{$search}%\" GROUP BY name,update

までは正しいと思うのですが、さらにtimeの最新を指定する方法を教えていただけませんか?
よろしくお願いします。


いろいろ探して試行錯誤し、以下に行きついたのですが、部分一致がうまく機能しない時があります。(情報不足などあればご指摘ください。)

SELECT * FROM db where (time) in (SELECT MAX(time) FROM db WHERE name LIKE \"%{$search}%\" GROUP BY name,update)

(中略・件数を取得しページャーに使っています)

SELECT * FROM db where (time) in (SELECT MAX(time) FROM db WHERE name LIKE \"%{$search}%\" GROUP BY name,update) ORDER BY time DESC LIMIT $start,10

(中略・whileとmysql_fetch_arrayで表示させています)

A 回答 (1件)

SELECT * FROM db where (name,update,time) in (SELECT name,update,MAX(time) FROM db WHERE name LIKE \"%{$search}%\" GROUP BY name,update)



じゃない?
    • good
    • 0
この回答へのお礼

ありがとうございます。おかげで希望通りの動作をするようになりました。

質問文のtimeをid(aiによる単なる連番)に変えても動作しましたが、おそらく文法的には間違いなのでしょうね…。


返信遅くなり申し訳ありませんでした。ありがとうございました。

お礼日時:2012/12/15 13:47

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!