電子書籍の厳選無料作品が豊富!

MySQL4.0.26でテーブルの左外部結合がしたいです。
左テーブルAと
右テーブルBをWHERE句で抽出したもの
を結合することはできないのでしょうか?

考えた以下の式ではエラーが出てしまいます。

SELECT *
FROM A
LEFT JOIN (
SELECT * B WHERE id = 1
) AS B2
ON A.id = B2.id

A 回答 (3件)

サブクエリを使用しなくても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/subquerie …
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/01/06 19:06

>SELECT * B WHERE id = 1



もしこの通りのSQLなら、FROMが抜けてるから、
当然、エラーになるでしょうね。
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/01/06 18:59

こんにちわ。


ためしてないですが、こんな感じです。

select a.*,b.* from a
left join b on b.id = a.id


動かなかったらごめんなさい。
ちなみに、動かない場合はエラーメッセージを
載せてくれたほうが指摘しやすいですよ。
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/01/06 19:14

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!