如何计算指的是在MySQL中的外键行的金额是多少?(How to count amount of r

2019-09-16 15:43发布

比方说,一个表像

CREATE TABLE `testdb`.`test` (
  `id` bigint unsigned NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

还有其他表可能有外键参照test.id列。 有趣的是,我不知道是什么表有这样一个外键和多少行表了。

现在我想计算有外键test.id.行表中分散的量 可能吗?

我认为这是理论上的可能,否则,MySQL不能做这样的操作ON DELETE CASCADEDELETE SET NULL ...

Answer 1:

显示与行数所有引用的表

SELECT rc.table_name, t.TABLE_ROWS
FROM `REFERENTIAL_CONSTRAINTS` rc
INNER JOIN `TABLES` t ON t.TABLE_NAME = rc.TABLE_NAME
WHERE rc.REFERENCED_TABLE_NAME = "test"

显示所有被引用的表行数的总和

SELECT SUM(t.TABLE_ROWS) AS allReferencedTablesRowCount
FROM `REFERENTIAL_CONSTRAINTS` rc
INNER JOIN `TABLES` t ON t.TABLE_NAME = rc.TABLE_NAME
WHERE rc.REFERENCED_TABLE_NAME = "test"


Answer 2:

如果你有外键约束定义的,你可以从数据库中读取架构,看看哪列在表链接到您的主键。

编辑: 检查这 (在左侧选择“数据库的元数据” - >“查找子表”)



文章来源: How to count amount of rows referring to a foreign key in MySql?