2015-02-23 125 views
0

我得到了兩張表格,這兩張表格在保存問題,姓氏和名字時是相同的。其中一個是英國,一個是美國。現在我想知道哪個人問的問題最多。我試着找到一個解決方案:結合兩個具有相同結構的表格

SELECT QUESTION , SURNAME , FORENAME , Count(*) 
FROM table_UK 
    GROUP BY SURNAME,FORENAME 
     ORDER BY 1 
      DESC LIMIT 10 

這也給我我想要的結果,但這只是英國表。我想找出前10名最被問及的人。這意味着我必須把英國和美國的牌桌結合起來,然後列出他們。我不希望英國的TOP 10和美國的前10名。他們應該混合在一起。

現在我發現了「聯盟」命令tables.So結合我試了一下,並執行該:

SELECT QUESTION , SURNAME , FORENAME , Count(*) 
    FROM table_UK 
     UNION 
      SELECT QUESTION , SURNAME , FORENAME , Count(*) 
       FROM table_US 
        GROUP BY SURNAME,FORENAME ORDER BY 1 DESC LIMIT 10 

但這gaves我錯了results.Somehow它計數錯誤。有人有一個想法,我怎麼可以得到一個解決方案?

回答

-1
SELECT * FROM (
    SELECT SURNAME , FORENAME , Count(*) as RANK 
     FROM table_UK 
    GROUP BY SURNAME , FORENAME 
    UNION 
    SELECT SURNAME , FORENAME , Count(*) as RANK 
     FROM table_US 
    GROUP BY SURNAME,FORENAME 
    ) as t 
    ORDER BY t.RANK DESC 
    LIMIT 10 
+0

缺少'FROM'和外部查詢的別名,'COUNT()'進入外部查詢。使用'UNION ALL'。 – 2015-02-23 19:33:08

+0

是的,修好了,謝謝 – Alex 2015-02-23 19:34:11

+0

感謝這幫了很大的忙! – 2015-02-23 19:35:41

相關問題