目次
事象
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はまだまだどうやってデータ取るんだろうということが多いんですが、ちゃんとデータが取得できたときは達成感ですね!
今後も勉強していきたいと思います。