• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:SQL 自己結合で件数の条件指定)

SQL 自己結合で件数の条件指定

このQ&Aのポイント
  • SQLで自己結合を使用して、特定の条件で行を抽出する方法について説明します。
  • WKテーブルのPOSTID毎に行の件数を取得し、上位2件以外の行を抽出する方法について説明します。
  • より効率的な方法や上手な方法があれば、教えていただきたいです。

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

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

こんな感じでは? //元データ create table WK(ID int not null primary key, POSTID int, DATA varchar(20), FLAG tinyint); insert into WK values(1,1,'aaaa',0),(2,1,'bbbb',0),(3,1,'cccc',0),(4,1,'dddd',0),(5,5,'eeee',0),(6,5,'ffff',0),(7,5,'gggg',0),(8,4,'hhhh',0),(9,4,'iiii',0),(10,4,'jjjj',0); //アップデート update WK as t0 inner join (select ID from WK as t1 where (select count(*) +1 from WK AS t2 WHERE t2.ID < t1.ID and t2.POSTID=t1.POSTID) >2) as t3 on t0.ID=t3.ID set FLAG=1 where t3.ID is not null; //表示 select * from WK; ※考え方 POSTIDごとにID順でランクをつけ、そのランクが2より大きいもののIDをつかって アップデートする。

bindoo
質問者

お礼

おぉ~出来ました! update文込みのご回答までいただき感激です。 ランク付けの方法大変参考になります。 SQL道まだまだ精進いたします。 ありがとうございました。

関連するQ&A