- ベストアンサー
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
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
サブクエリを使用しなくてもONの後にANDで条件を追加すれば可能です。 SELECT * FROM A LEFT JOIN B ON A.id = B.id AND B.id = 1 サブクエリに関してですが、残念ながらバージョン4.0以前のMySQLではサブクエリを完全にはサポートしていません。複雑なものに関してはテンポラリテーブル等を作成して対応するしかないでしょう。 詳しくは参考URLのリファレンスマニュアルをご覧ください。
その他の回答 (2)
- chukenkenkou
- ベストアンサー率43% (833/1926)
回答No.3
>SELECT * B WHERE id = 1 もしこの通りのSQLなら、FROMが抜けてるから、 当然、エラーになるでしょうね。
質問者
お礼
ありがとうございます。 FROMは書き忘れでした。 質問を編集できないのが難点ですね。
- kaeru_007
- ベストアンサー率22% (8/36)
回答No.1
こんにちわ。 ためしてないですが、こんな感じです。 select a.*,b.* from a left join b on b.id = a.id 動かなかったらごめんなさい。 ちなみに、動かない場合はエラーメッセージを 載せてくれたほうが指摘しやすいですよ。
質問者
お礼
ありがとうございます。 BのテーブルをWHEREで抽出したいのです。
お礼
ありがとうございます。 わかりやすいSQL文で真っ先に試しました。 思ったとおりに動いています。