2016-03-29 15 views
0

私は1〜9のpm_messageテーブルを持っており、MySQLクエリのプロセスを簡略化するビューを作成したいと考えています。私が持っているもの重複する列のビューを作成してマージするにはどうすればよいですか?

は私がdouplicate列でエラーが発生しました

CREATE VIEW `pm_messages` AS 
SELECT * FROM 
`pm_messages_0`, 
`pm_messages_1`, 
`pm_messages_2`, 
`pm_messages_3`, 
`pm_messages_4`, 
`pm_messages_5`, 
`pm_messages_6`, 
`pm_messages_7`, 
`pm_messages_8`, 
`pm_messages_9`; 

です。レコードが重複していない、私はすべてのビューをマージしたい、私は何をすべきか?

+1

すべてのテーブルに参加するのではなく、 'SELECT * FROM pm_messages_0 union pm_messages_1 union pm_messages_2、... 'のように' union'を試してみてください。 –

+0

'pm_messageテーブルはありますか? 1〜9'のテーブルはユニークなフィールドですか? –

+0

ビューの代わりに、 'UNION'テーブルを作成することができます。 – Barmar

答えて

0

巨大なクロスジョインをコーディングしました。列の数に応じて、宇宙がエントロピーの熱死に苦しむ前に、おそらく戻ってこないでしょう。

私はあなたが組合たい、ほぼ確信している:

CREATE VIEW `pm_messages` AS 
SELECT * FROM `pm_messages_0` union all 
SELECT * FROM `pm_messages_1` union all 
SELECT * FROM `pm_messages_2` union all 
SELECT * FROM `pm_messages_3` union all 
SELECT * FROM `pm_messages_4` union all 
SELECT * FROM `pm_messages_5` union all 
SELECT * FROM `pm_messages_6` union all 
SELECT * FROM `pm_messages_7` union all 
SELECT * FROM `pm_messages_8` union all 
SELECT * FROM `pm_messages_9`; 

すべてのテーブルが同じ列数と種類を持っている場合、これは動作しますが。そうでない場合は、明示的に列を選択して、各選択が同じ数と種類の列を返すようにする必要があります。

関連する問題