2013-07-28 22 views
0

如何將這些選擇語句聯合起來,使每個表具有不同數量的列?具有不同列數的UNION多選語句

(SELECT title, description, full_description, keywords, option1, option2, option3, option4, option5, option6, option7, option8 FROM articles WHERE title LIKE ? OR description LIKE ? OR full_description LIKE ? OR keywords LIKE ? OR option1 LIKE ? OR option2 LIKE ? OR option3 LIKE ? OR option4 LIKE ? OR option5 LIKE ? OR option6 LIKE ? OR option7 LIKE ? OR option8 LIKE ?) 
UNION ALL 
(SELECT title, description, full_description, keywords, option1, option2, option3, option4, option5, option6, option7, option8 FROM news WHERE title LIKE ? OR description LIKE ? OR full_description LIKE ? OR keywords LIKE ? OR option1 LIKE ? OR option2 LIKE ? OR option3 LIKE ? OR option4 LIKE ? OR option5 LIKE ? OR option6 LIKE ? OR option7 LIKE ? OR option8 LIKE ?) 
UNION ALL 
(SELECT title, description, full_description, keywords, option1, option2, option3, option4, option5, option6, option7, option8 FROM products WHERE title LIKE ? OR description LIKE ? OR full_description LIKE ? OR keywords LIKE ? OR option1 LIKE ? OR option2 LIKE ? OR option3 LIKE ? OR option4 LIKE ? OR option5 LIKE ? OR option6 LIKE ? OR option7 LIKE ? OR option8 LIKE ?) 
UNION ALL 
(SELECT title, description, option1, option2, option3, option4, option5, option6, option7, option8 FROM gallery_images WHERE title LIKE ? OR description LIKE ? OR option1 LIKE ? OR option2 LIKE ? OR option3 LIKE ? OR option4 LIKE ? OR option5 LIKE ? OR option6 LIKE ? OR option7 LIKE ? OR option8 LIKE ?) 
UNION ALL 
(SELECT title, description, option1, option2, option3, option4, option5, option6, option7, option8 FROM pages WHERE title LIKE ? OR description LIKE ? OR option1 LIKE ? OR option2 LIKE ? OR option3 LIKE ? OR option4 LIKE ? OR option5 LIKE ? OR option6 LIKE ? OR option7 LIKE ? OR option8 LIKE ?) 

我收到此錯誤:

The used SELECT statements have a different number of columns 

回答

1

簡單:你不能 - 你必須添加一些空白列(如NULL as blank1)選擇那些比列最大#少的子查詢

1

只需使用NULL值作爲丟失字段的佔位符。

這應該工作:

(SELECT title, description, full_description, keywords, option1, option2, option3, option4, option5, option6, option7, option8 FROM articles WHERE title LIKE ? OR description LIKE ? OR full_description LIKE ? OR keywords LIKE ? OR option1 LIKE ? OR option2 LIKE ? OR option3 LIKE ? OR option4 LIKE ? OR option5 LIKE ? OR option6 LIKE ? OR option7 LIKE ? OR option8 LIKE ?) 
UNION ALL 
(SELECT title, description, full_description, keywords, option1, option2, option3, option4, option5, option6, option7, option8 FROM news WHERE title LIKE ? OR description LIKE ? OR full_description LIKE ? OR keywords LIKE ? OR option1 LIKE ? OR option2 LIKE ? OR option3 LIKE ? OR option4 LIKE ? OR option5 LIKE ? OR option6 LIKE ? OR option7 LIKE ? OR option8 LIKE ?) 
UNION ALL 
(SELECT title, description, full_description, keywords, option1, option2, option3, option4, option5, option6, option7, option8 FROM products WHERE title LIKE ? OR description LIKE ? OR full_description LIKE ? OR keywords LIKE ? OR option1 LIKE ? OR option2 LIKE ? OR option3 LIKE ? OR option4 LIKE ? OR option5 LIKE ? OR option6 LIKE ? OR option7 LIKE ? OR option8 LIKE ?) 
UNION ALL 
(SELECT title, description, NULL AS full_description, NULL AS keywords, option1, option2, option3, option4, option5, option6, option7, option8 FROM gallery_images WHERE title LIKE ? OR description LIKE ? OR option1 LIKE ? OR option2 LIKE ? OR option3 LIKE ? OR option4 LIKE ? OR option5 LIKE ? OR option6 LIKE ? OR option7 LIKE ? OR option8 LIKE ?) 
UNION ALL 
(SELECT title, description, NULL AS full_description, NULL AS keywords, option1, option2, option3, option4, option5, option6, option7, option8 FROM pages WHERE title LIKE ? OR description LIKE ? OR option1 LIKE ? OR option2 LIKE ? OR option3 LIKE ? OR option4 LIKE ? OR option5 LIKE ? OR option6 LIKE ? OR option7 LIKE ? OR option8 LIKE ?)