13

以下のクエリは mysql 4.1 で動作していましたが、5.0 では動作しません:

SELECT * FROM email e, event_email ee 
LEFT JOIN member m on m.email=e.email 
WHERE ee.email_id = e.email_id

エラー: 1054 ('on 句' の不明な列 'e.email')

4

3 に答える 3

18

JOIN句内の句で以前に結合されたテーブルのみを参照できますON

SELECT  *
FROM    email e
JOIN    event_email ee 
ON      ee.email_id = e.email_id
LEFT JOIN
        member m
ON      m.email = e.email 

これはANSI JOINS、元のクエリでかっこを囲むと、よりよく説明できます。

SELECT  *
FROM    email e,
        (
        event_email ee
        LEFT JOIN
                member m
        ON      m.email = e.email 
        )
WHERE   ee.email_id = e.email_id

ご覧のとおりe.email、括弧内にはソースがありません。そのため、解決できませんでした。

于 2010-05-12T16:22:51.767 に答える
3

答えは、FROM ステートメントのテーブルの直後に JOIN ステートメントを配置することです。これは、結合するテーブルであるためです。

SELECT * 
FROM email e 
LEFT JOIN member m on m.email=e.email, 
event_email ee 
WHERE ee.email_id = e.email_id
于 2018-01-10T14:38:55.310 に答える