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

select文の記述について

このQ&Aのポイント
  • select文の記述について質問させていただきます。データベースのテーブルから特定の条件でデータを抽出したい場合、select文を使用します。
  • データベースのテーブルから重複するデータを除外し、特定の列の値に基づいてデータを絞り込むには、select文の条件を設定します。
  • 上記のデータベースのテーブルの場合、number列を条件として2人分のデータを抽出するためには、select文にnumberの条件を追加します。

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

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

//元データ create table tbl(id int,name varchar(20),number int,score int); insert into tbl values(1,'tanaka',358,98),(3,'tanaka',358,23),(4,'tanaka',358,45),(11,'yamada',126,63),(17,'yamada',126,77),(23,'suzuki',274,36),(45,'suzuki',274,16),(59,'suzuki',274,89),(73,'suzuki',274,75),(80,'hanako',89,24); //検索 select * from tbl where number in( select number from (select number from tbl group by number order by min(id) asc limit 2) as sub ) order by id asc; 考え方 select number from tbl group by number order by min(id) asc limit 2 で、idの小さい2人分のnumberを抜き出し そのnumberを持つ全データを抜き出す。 本来であれば select * from tbl where number in( select number from tbl group by number order by min(id) asc limit 2 ) order by id asc; でいければ楽なのですが、通常のサブクエリにlimitが使えないので一度select文でうける

kondo3069
質問者

お礼

ご丁寧な回答ありがとうございます。 ご記述いただいた内容でうまく表示がされました。 まだまだSQLについての勉強が不十分でありますので、 記述いただいた内容をも1つずつ理解して 今後の活かしたいと思います。 ありがとうございました。

その他の回答 (2)

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.2

SQLは理論の構成が大事です。 それと、MySQLはVersion4と5以降ではかなり文法が 違います。大きくはサブクエリが使えるかどうかで、 書き方が全然違ってきます。DBの質問(DBに限らないが) では必ずバージョンを書くようにしてください。 理論としては以下の通りです。 1.名前でグループ化し、IDの最小値、NUMBERの最大値を  IDの最小値の昇順に並べる。 2.上記クエリから2レコード抜き出す。 3.抽出したレコードのNUMBERと一致するレコードを抽出する。 サブクエリが使えると簡単ですが、使えないバージョンですと かなり面倒なことになります。後者では一時テーブルくらい 使わないと不可能かも知れません。とにかく、バージョンを 補足してください。

回答No.1

where句を括弧を使って and , or で使い分けるだけです。 小学生くらいの算数で、出てくるグループ分けレベルです。