• ベストアンサー

MySQLでLEFT JOIN

MySQL4.0.26でテーブルの左外部結合がしたいです。 左テーブルAと 右テーブルBをWHERE句で抽出したもの を結合することはできないのでしょうか? 考えた以下の式ではエラーが出てしまいます。 SELECT * FROM A LEFT JOIN ( SELECT * B WHERE id = 1 ) AS B2 ON A.id = B2.id

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

  • ベストアンサー
回答No.2

サブクエリを使用しなくてもONの後にANDで条件を追加すれば可能です。 SELECT * FROM A LEFT JOIN B ON A.id = B.id AND B.id = 1 サブクエリに関してですが、残念ながらバージョン4.0以前のMySQLではサブクエリを完全にはサポートしていません。複雑なものに関してはテンポラリテーブル等を作成して対応するしかないでしょう。 詳しくは参考URLのリファレンスマニュアルをご覧ください。

参考URL:
http://dev.mysql.com/doc/refman/4.1/ja/subqueries.html
siteyuh
質問者

お礼

ありがとうございます。 わかりやすいSQL文で真っ先に試しました。 思ったとおりに動いています。

その他の回答 (2)

回答No.3

>SELECT * B WHERE id = 1 もしこの通りのSQLなら、FROMが抜けてるから、 当然、エラーになるでしょうね。

siteyuh
質問者

お礼

ありがとうございます。 FROMは書き忘れでした。 質問を編集できないのが難点ですね。

  • kaeru_007
  • ベストアンサー率22% (8/36)
回答No.1

こんにちわ。 ためしてないですが、こんな感じです。 select a.*,b.* from a left join b on b.id = a.id 動かなかったらごめんなさい。 ちなみに、動かない場合はエラーメッセージを 載せてくれたほうが指摘しやすいですよ。

siteyuh
質問者

お礼

ありがとうございます。 BのテーブルをWHEREで抽出したいのです。