SQL 同一テーブルでの値の比較

sql

事象

SQLで同一テーブルの値を比較してデータを取得したい。

やってみたこと

select s1.*
from shops s1, shops s2
where s1.`card_no_from` <> s2.`next_card_no`;

102件しかデータがないのに、6,075件のデータが取得された。

解決方法

select s1.*
from shops s1, shops s2
where s1.id = s2.id and s1.`card_no_from` <> s2.`next_card_no`;

s1の1件のデータに対して、s2の全件のデータを比較してたから、膨大な数のデータが取得されていた。
それぞれのIDが同じにして、比較したい条件を入れることで、同一レコードでのみ比較することができました。
これで求めていたデータを取得完了です。

おわりに

SQLはまだまだどうやってデータ取るんだろうということが多いんですが、ちゃんとデータが取得できたときは達成感ですね!
今後も勉強していきたいと思います。

SNS

Twitter:@nae310_
Instagram:310nae