2016-10-03 5 views
0

に参加し、内部テーブルを組合に加入作成しますC & B.MySQLは右の私のSQL 5.5で

Please see the image for the logic

CREATE TABLE IF NOT EXISTS TABLE_NAME AS (

(SELECT a.column1, b.column2 FROM TABLEA AS a 

INNER JOIN TABLEB AS b 

ON a.column1 = b.column1) 

UNION 

(SELECT c.column1, b.column2 FROM TABLEC AS c 

RIGHT JOIN TABLEB AS b 

ON b.column1 = c.column1) 

); 

エラー:

ERROR 1064 (42000) at line 11: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(SELECT a.column1, b.column2 FROM TABLEA AS a 

他の試み:

CREATE TABLE IF NOT EXISTS TABLE_NAME AS (

(SELECT a.column1, b.column2 FROM TABLEA AS a 

INNER JOIN TABLEB AS b 

ON a.column1 = b.column1) 

UNION 

(SELECT c.column1, b.column2 FROM TABLEC AS c 

RIGHT JOIN TABLEB AS b 

ON b.column1 = c.column1) 

); 

Error: 

ERROR 1064 (42000) at line 11: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'UNION 

は、任意の教祖はいくつかのアドバイスを提供してもらえますか?ありがとう。

+0

を試してみてください、私はあなたが 'LEFT JOIN'、ない' RIGHT JOIN'が必要だと思います。 –

答えて

0

代わりに以下のことを試してみてください。

documentation

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name 
    [(create_definition,...)] 
    [table_options] 
    [partition_options] 
    [IGNORE | REPLACE] 
    [AS] query_expression 

query_expressionから引用

CREATE TABLE IF NOT EXISTS TABLE_NAME AS 

(SELECT a.column1, b.column2 FROM TABLEA AS a 

INNER JOIN TABLEB AS b 

ON a.column1 = b.column1) 

UNION 

(SELECT c.column1, b.column2 FROM TABLEC AS c 

RIGHT JOIN TABLEB AS b 

ON b.column1 = c.column1) 

See Demo


は括弧

で囲まれたべきではありません
+0

悲しいことに、これは動作しません:/。作成されたテーブルが次のステップに存在しないと言うだけです。私も試した "テーブルを存在しないTABLE_NAMEを作成する(選択...."とそれは同じエラーメッセージを返します – Chubaka

+0

あなたはこのデモを確認してもらえますか?http://sqlfiddle.com/#!9/16245f/1/0 @ Chubaka – 1000111

+0

こんにちは@ 1000111、2セントありがとうございました。私は実際にはMySQL 5.5で、フィディルドをMySQL 5.5に変更すると、ビルドスキーマに不明なエラーが表示されます:/ – Chubaka

0

はベン図から、この

CREATE TABLE IF NOT EXISTS TABLE_NAME AS 
(
SELECT S.* 
FROM 
(
SELECT a.column1, b.column2 FROM TABLEA AS a 
INNER JOIN TABLEB AS b ON a.column1 = b.column1 
UNION 
SELECT c.column1, b.column2 FROM TABLEC AS c 
RIGHT JOIN TABLEB AS b ON b.column1 = c.column1 
) S 
); 
+0

悲しいことに、これは1つはうまくいきません。これは単に "ERROR 1146(42S02)11行目:TABLE_NAMEが存在しません"を返します。 – Chubaka

+0

Hmm。私はこれがうまく動作することをテストしました。あなたは少なくとも構文エラーが消えてしまったことに気づくでしょう。 –

+0

こんにちは@ P.Salmon、あなたはMySQL 5.5ですか? – Chubaka

関連する問題