• ベストアンサー

mysql ひとつ上のレコード

恐れ入ります。 Mysqlにて、ひとつ上のレコードを参照し、 真であれば○○偽であれば××という処理をしたいのですが、どのような方法がありますでしょうか。 EXELで行うと、=if(A1=A2,"1","0") のような処理になります。 昇順で並び替えて、重複レコードについて処理を行いたいです。 よろしくお願いします。

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

  • ベストアンサー
  • cma3atgoo
  • ベストアンサー率35% (32/90)
回答No.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 ;

spider32
質問者

お礼

ありがとうございます。大変参考になりました。

その他の回答 (2)

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

ではこんな感じで 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が連番で確定している場合ももう少し手をぬけると思います

spider32
質問者

お礼

ありがとうございます。大変参考になりました。

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

>Mysqlにて、ひとつ上のレコードを参照し、 リレーショナルデータベースにおいて、「格納順」という概念はありません。 なのでご提示の命題は達成できません とはいえ、たとえばオートインクリメントでプライマリキーをつけるなど 順番を確定させるためのユニークなIDがふってあれば 自分のIDより小さなIDで最大値をとれば前のレコードと類推できます。

spider32
質問者

お礼

ありがとうございます。 ご説明いただいて、内容は理解したのですが、方法がわかりません。 オートインクリメントでプライマリーキーは振られています。 自分のIDより小さいIDの最大値の求め方をご教授ください。 よろしくお願いします。

関連するQ&A

専門家に質問してみよう