2012-01-03 119 views
2

更多的價值,我使用這個查詢從兩個表中得到的結果:Getteing與UNION ALL SQL查詢

SELECT * FROM (
    SELECT parent_id as mID, count(*) as cnt 
     FROM wp_forum_posts 
     WHERE text LIKE '%{$word}%' 
     GROUP by 1 
     UNION ALL 
      SELECT id, count(*) 
      FROM wp_forum_threads 
      WHERE subject LIKE '%{$word}%' 
      GROUP by 1) x 
ORDER BY 2, 1 

我想從wp_forum_threads選擇一些更多的價值。值如subject。 我該怎麼做? 只需在id後面添加不起作用。那麼查詢將不返回任何結果。

+3

您的列必須匹配,但是您可以用空字符串替換該SELECT中缺失的列。您仍然使用AS進行別名。 – DOK 2012-01-04 00:03:14

+2

換句話說,每個正在UNION的SELECT的列數必須相同。 – 2012-01-04 00:04:14

回答

3

UNION ALL的兩個部分的select中的列數應該相同。這意味着,例如,如果你想添加「主題」來查詢的第二部分,你需要在查詢的第一部分添加一個「佔位符」是好:

SELECT * FROM (
SELECT parent_id as mID, NULL, count(*) as cnt 
    FROM wp_forum_posts 
    WHERE text LIKE '%{$word}%' 
    GROUP by 1 
    UNION ALL 
     SELECT id, subject, count(*) 
     FROM wp_forum_threads 
     WHERE subject LIKE '%{$word}%' 
     GROUP by 1) x 
ORDER BY 2, 1 

這應該管用。