mysql - 比较两个表中的两列并返回匹配项的总和

标签 mysql sql database compare

我正在开发一个项目,我必须将两个表放在一起比较并计算出现次数的总和。在这个例子中,我将使用 name 作为我想要比较的键。我已经使用 Union all 和 Count(*) 但它不会给我所需的输出。

table 苹果

+----+-------+---------+
| Id | Name  | Surname |
+----+-------+---------+
|  1 | Adam  | Jaxon   |
|  2 | Adam  | Brixton |
|  3 | Brian | Simpson |
|  4 | Adam  | Steper  |
|  5 | Brian | Bastion |
+----+-------+---------+

表橙

+----+-------+---------+
| id | name  | surname |
+----+-------+---------+
|  1 | Adam  | Thompson|
|  2 | Brian | Coach   |
|  3 | Jhon  | Sinded  |
+----+-------+---------+

Adam 有一个名字匹配,Brian 有一个匹配,所以我希望收到的期望输出是

+-------+
| Total |
+-------+
|  3    |
|  1    |
+--------+

我使用的查询与回答该问题的人类似,但有一些变化。不幸的是,这仅返回每个名称的匹配数

SELECT COUNT(*)
FROM
(
SELECT Name
FROM 
apple
UNION ALL
SELECT 
NAME
FROM
orange
) as named
GROUP BY name



+----------+
| Count(*) |
+----------+
|   2    
|   3
+----------+

最佳答案

尝试一下,分组并计数名称:

SELECT 
    id,
    name,
    surname
    count(1) as total
    FROM
    (
        SELECT 
            id,
            name,
            surname
            FROM apple
        UNION ALL
        SELECT 
            id,
            name,
            surname
        FROM orange
    )
GROUP BY name

更新

在查询之前对所有结果求和:

SELECT sum(total) 
FROM (
        SELECT 
            id,
            name,
            surname
            count(1) as total
            FROM
            (
                SELECT 
                    id,
                    name,
                    surname
                    FROM apple
                UNION ALL
                SELECT 
                    id,
                    name,
                    surname
                FROM orange
            )
    GROUP BY name
)

关于mysql - 比较两个表中的两列并返回匹配项的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37004341/

相关文章:

php - MySQL 一对多关系

php - 第一次使用 mysqli_real_escape_string

mysql max_user_connections 和 innodb 与 myisam

mysql - 在数据库中存储 json 的正确方法

java - 如何使用其他表中的列在 Liquibase 中创建索引?

c++ - 基于服务器的嵌入式数据库

mysql:多索引建议

mysql - MySQL 中何时使用单引号、双引号和反引号

c# - 数据转换失败。 [ OLE DB 状态值(如果已知)= 2 ]

sql - 在 SQL Server 中使用 MD5 哈希作为主键与使用 int 标识作为主键的优缺点