• ベストアンサー

得られたカラムを利用して複数行を1文で取得したい

MySQLバージョン4.1.16を使用しています。 テーブル「tbl1」のnoが2が保有しているuser_id(この場合はaaaa) の行を1つのSQL文で取得したいのですが、どのようなSQL文なるでしょうか? 例えばこの場合は1,2,4行目が取得できるようにしたいです。 また、PHPなどを利用して記述する場合に、 一旦、 select * from tbl1 where no = '2'; で得られたuser_id(aaaa)を変数に保存しておき、 それを利用してもう一度 select * from tbl1 where user_id = '{上のSQL文で得られた変数(中身はaaaa)}'; と二度記述してもできるのでしょうが、 初めの1つのSQL文で取得する場合と、2つのSQL文わけて取得する場合とでは 件数が多くなっていった時にどちらが早い遅いというのはあるのでしょうか? テーブル「tbl1」 +----------+---------+ |  user_id  |  no   | +----------+---------+ |  aaaa   |   1   | +----------+---------+ |  aaaa   |   2   | +----------+---------+ |  bbbb   |   3   | +----------+---------+ |  aaaa   |   4   | +----------+---------+

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

  • ベストアンサー
  • masa6272
  • ベストアンサー率66% (93/140)
回答No.2

副問い合わせでも可能ですが、自己結合を使って書けます。 SELECT T1.user_id,T1.no FROM tbl1 AS T1,tbl1 AS T2 WHERE T2.no = 2 AND T1.user_id = T2.user_id; インデックス(キー)の設定にもよりますが、テーブルサイズが大きくなったり、引くnoの数が増えてきた時には、この方法がもっとも速いでしょう。

takagoo100
質問者

お礼

ご返答ありがとうございます。 なるほど、そういうやり方もあるんですね。 参考になりました。

その他の回答 (1)

  • asamixxx
  • ベストアンサー率35% (15/42)
回答No.1

select * from tbl1 where user_id = (select user_id from tbl1 where no = 2) または select * from tbl1 where user_id in (select user_id from tbl1 where no = 2) で取得可能です。(副問い合わせ)

takagoo100
質問者

お礼

ご返答ありがとうございます。 そのやり方でできました。ありがとうございます。

関連するQ&A