- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:SQL 自己結合で件数の条件指定)
SQL 自己結合で件数の条件指定
このQ&Aのポイント
- SQLで自己結合を使用して、特定の条件で行を抽出する方法について説明します。
- WKテーブルのPOSTID毎に行の件数を取得し、上位2件以外の行を抽出する方法について説明します。
- より効率的な方法や上手な方法があれば、教えていただきたいです。
- みんなの回答 (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をつかって アップデートする。
お礼
おぉ~出来ました! update文込みのご回答までいただき感激です。 ランク付けの方法大変参考になります。 SQL道まだまだ精進いたします。 ありがとうございました。