PRIMARYキーを複数のフィールドで構成しているテーブル同士をJOINしてSELECTしたいのです。
テーブル準備
CREATE TABLE IF NOT EXISTS ta ( F1 INT,F2 INT,Fa INT,PRIMARY KEY (`F1`,`F2`) ) ENGINE=InnoDB DEFAULT CHARSET=cp932; CREATE TABLE IF NOT EXISTS tb ( F1 INT,F2 INT,Fb INT,PRIMARY KEY (`F1`,`F2`) ) ENGINE=InnoDB DEFAULT CHARSET=cp932; INSERT INTO ta (F1,F2,Fa) VALUES(1,2,3),(4,5,6),(7,8,9); INSERT INTO tb (F1,F2,Fb) VALUES(1,2,33),(4,5,66),(3,8,99);
以下のような感じ。
SELECT ta.*,tb.Fb FROM ta LEFT JOIN tb ON ta.PRIMARY = tb.PRIMARY WHERE tb.PRIMARY IS NULL;
しかし、上記のようにindex_nameを参照すると、そのようなカラムは知りません、と言われます。
Error Code: 1054. Unknown column 'ta.PRIMARY' in 'on clause'
Error Code: 1054. Unknown column 'tb.PRIMARY' in 'where clause'
なお、下記のように、index_nameではなく定義したフィールド名を使えばエラーは出ません。
SELECT ta.*,tb.Fb FROM ta LEFT JOIN tb ON ta.F1 = tb.F1 AND ta.F2 = tb.F2 WHERE tb.F1 IS NULL;
SELECT文ではindex_nameを参照してはいけないのでしょうか?
index_nameはどのような場合に利用できるのでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/02/28 06:35