dポイントプレゼントキャンペーン実施中!

恐れ入ります。
Mysqlにて、ひとつ上のレコードを参照し、
真であれば○○偽であれば××という処理をしたいのですが、どのような方法がありますでしょうか。

EXELで行うと、=if(A1=A2,"1","0") のような処理になります。
昇順で並び替えて、重複レコードについて処理を行いたいです。

よろしくお願いします。

A 回答 (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
;
    • good
    • 2
この回答へのお礼

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

お礼日時:2014/09/27 13:51

ではこんな感じで



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が連番で確定している場合ももう少し手をぬけると思います
    • good
    • 0
この回答へのお礼

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

お礼日時:2014/09/27 13:51

>Mysqlにて、ひとつ上のレコードを参照し、



リレーショナルデータベースにおいて、「格納順」という概念はありません。
なのでご提示の命題は達成できません

とはいえ、たとえばオートインクリメントでプライマリキーをつけるなど
順番を確定させるためのユニークなIDがふってあれば
自分のIDより小さなIDで最大値をとれば前のレコードと類推できます。
    • good
    • 0
この回答へのお礼

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

よろしくお願いします。

お礼日時:2013/04/12 14:12

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!