2015-02-23 87 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

相关问题