比较每个id与其他数据库的外键数

时间:2014-07-30 22:31:58

标签: mysql sql

有两个结构相同的数据库 在每个数据库中都有这两个表。

- 表'客户'

+----+-----------------+-----------------+
| id | name            | document        |
+----+-----------------+-----------------+

- 表'购买'

+----+-----------------+-----------------+
| id | id_client       | product         |
+----+-----------------+-----------------+

<小时/> 我想知道如何插入第三个数据库(db3),所有在db1和db2中相同的客户端,以及与它们相关的外键数量相同。

逻辑上会是这样的:
插入到db3.clients中,来自db1.clients和db2.clients的相等客户端行,其中count(db1.Purchases.id_client)= count(db2.Purchases.id_client)

1 个答案:

答案 0 :(得分:1)

您可以使用一组JOIN来选择

  1. db1和db2中的客户端

  2. db1中每个客户的购买数量

  3. db2中具有相同购买次数的客户

  4. 然后,您只需使用INSERT语句插入这些选定的行,如下所示:

    INSERT INTO db3.clients
    SELECT c1.*
    FROM db1.clients c1
    INNER JOIN db2.clients c2
    ON c1.id = c2.id
    INNER JOIN 
    (
        SELECT 
            id_client,
            count(*) cnt_purchases
        FROM db1.Purchases
        GROUP BY id_client
    ) p1
    ON c1.id = p1.id_client
    INNER JOIN
    (
        SELECT 
            id_client,
            count(*) cnt_purchases
        FROM db2.Purchases
        GROUP BY id_client
    ) p2
    ON p1.id_client = p2.id_client AND p1.cnt_purchases = p2.cnt_purchases;