- ベストアンサー
mysql ひとつ上のレコード
恐れ入ります。 Mysqlにて、ひとつ上のレコードを参照し、 真であれば○○偽であれば××という処理をしたいのですが、どのような方法がありますでしょうか。 EXELで行うと、=if(A1=A2,"1","0") のような処理になります。 昇順で並び替えて、重複レコードについて処理を行いたいです。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
最近のバージョンならコレでいけるかと select (select A from テーブル where ID = TBL.ID1) A1 , (select A from テーブル where ID = TBL.ID2) A2 , A1=A2の比較式 from ( select T1.ID as ID1, MAX(T2.ID) as ID2 from テーブル T1 LEFT JOIN テーブル T2 ON T1.ID > T2.ID group by T1.ID ) TBL ;
その他の回答 (2)
- yambejp
- ベストアンサー率51% (3827/7415)
ではこんな感じで create table hoge(id int not null primary key auto_increment,num int); insert into hoge(id,num) values(1,1),(2,6),(3,2),(4,5),(5,3),(6,4); 各レコードに対してひとつ前のidのnumをとる select id,num,(select num from hoge where id=( select max(id) from hoge as h2 where h2.id<h1.id)) as pre_num from hoge as h1 ちなみにidが連番で確定している場合ももう少し手をぬけると思います
お礼
ありがとうございます。大変参考になりました。
- yambejp
- ベストアンサー率51% (3827/7415)
>Mysqlにて、ひとつ上のレコードを参照し、 リレーショナルデータベースにおいて、「格納順」という概念はありません。 なのでご提示の命題は達成できません とはいえ、たとえばオートインクリメントでプライマリキーをつけるなど 順番を確定させるためのユニークなIDがふってあれば 自分のIDより小さなIDで最大値をとれば前のレコードと類推できます。
お礼
ありがとうございます。 ご説明いただいて、内容は理解したのですが、方法がわかりません。 オートインクリメントでプライマリーキーは振られています。 自分のIDより小さいIDの最大値の求め方をご教授ください。 よろしくお願いします。
お礼
ありがとうございます。大変参考になりました。