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

MySQLの検索について

このQ&Aのポイント
  • MySQLの検索についての方法とその最適化について解説します。
  • MySQLの検索について、1ページに表示するnameの数を指定し、nameごとにpriceでソートする方法を探しています。
  • クエリを2回発行せずに、1度で実現するためのSQLやより効率的な方法があれば教えてください。

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

>nameでソートした順に表示で間違いありません。 仕様としてはnameを3つ見せ、順位はname昇順、price昇順ということで SELECT ( SELECT COUNT(DISTINCT name) +1 FROM hoge AS H2 WHERE H2.name < H1.name ) AS RANK ,`H1`.* FROM hoge AS H1 HAVING RANK BETWEEN 1 AND 3 ORDER BY name,price でいけます。また HAVING RANK BETWEEN 1 AND 3 の範囲設定を調整すれば、好きな順位のデータだけ抜けだせます。

bulldozerQ
質問者

お礼

上記のSQLを参考に、まさに考えていた通りのことができました。 ありがとうございました。 分かりにくい文章にもかかわらずここまで的確な解答をいただき感激です。 それにしてもSQLというものは奥が深いですね… 自分ではとうてい考えつきそうにもないSQL文でした…

その他の回答 (2)

  • moousi
  • ベストアンサー率70% (21/30)
回答No.3

Rankを付けたり、limitで制御しても実現できそうですが、 >上記の事を1度で実現するSQLが存在する 結局ページごとにSQLを発行するなら、1度で実現することにならないと思うのです。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

>1ページに表示するnameの数は決まっている。 この場合nameのとはA,B,Cの3行という意味でしょうか? それとも6行という意味でしょうか? 仮に前者として、nameでソートした順に表示すればいいのでしょうか?

bulldozerQ
質問者

補足

分かりにくい説明になってしまいすいません。 nameでソートした順に表示で間違いありません。

関連するQ&A