Mysql 将每个id中的外键数与另一个数据库进行比较
有两个结构相同的数据库。Mysql 将每个id中的外键数与另一个数据库进行比较,mysql,sql,Mysql,Sql,有两个结构相同的数据库。 每个数据库中都有这两个表 -表“客户端” +----+-----------------+-----------------+ | id | name | document | +----+-----------------+-----------------+ +----+-----------------+-----------------+ | id | id_client | product |
每个数据库中都有这两个表 -表“客户端”
+----+-----------------+-----------------+
| id | name | document |
+----+-----------------+-----------------+
+----+-----------------+-----------------+
| id | id_client | product |
+----+-----------------+-----------------+
-表“采购”
+----+-----------------+-----------------+
| id | name | document |
+----+-----------------+-----------------+
+----+-----------------+-----------------+
| id | id_client | product |
+----+-----------------+-----------------+
我想知道如何在第三个数据库(db3)中插入所有在db1和db2中相同且具有相同数量外键的客户机。
逻辑上应该是这样的:
在db3.clients中插入来自db1.clients和db2.clients的相等clients行,其中count(db1.Purchases.id_client)=count(db2.Purchases.id_client)您可以使用一组连接来选择
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;
非常感谢,这太棒了:)Joseph B,如果相同客户机的ID在两个dbs上都不同怎么办?就像客户机Johnny在db1上的ID为3,但在db2上的ID为6一样,在这种情况下,您将在db3中得到两个ID不同但名称相同的行。如果要使用名称进行比较,那么如果发现db1和db2之间存在匹配,则需要知道要插入到db3中的id。