mysql - MySQL 中按外键依赖性排序的表名列表

标签 mysql sql database

给定一个 MySQL 数据库,如何获取按外键依赖性排序的表名列表,以便可以删除每个表?我知道外键存储在 KEY_COLUMN_USAGE 表中,但我不确定是否有实用方法可以按正确的顺序获取表名称。我更喜欢 100% SQL 解决方案。

最佳答案

如果您的外键遵循命名约定(它们应该:),那么您可以做一些简单的事情,例如

select table_name, group_concat(distinct constraint_name order by constraint_name) as fk_list
from   information_schema.key_column_usage
where  constraint_name rlike 'fk'
group  by table_name
order  by fk_list, table_name;

或者,如果您的外键不遵循命名约定,那么

select table_name, group_concat(distinct constraint_name order by constraint_name) as fk_list
from   information_schema.key_column_usage
where  referenced_table_name is not null
group  by table_name
order  by fk_list, table_name;

关于mysql - MySQL 中按外键依赖性排序的表名列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21491761/

相关文章:

iphone - 对核心数据实体的 NSSet 进行排序 - Objective-C

python - 如何在 Django 中表示学生与讲师的关系?

php - 连接两个表并查看极值 - 查询无法正常工作

MySQL查询合著者网

sql - 如何判断查询是否可以很好地扩展?

mysql - 在 SELECT 中使用键时如何从另一个表中获取名称?

mysql - 是否可以在 latin-1 字符集安装上恢复 UTF-8 MySQL 转储?

php - MySQL:为什么忽略表单字段中的文本?

mongodb - 设置 MongoDB 数据库配额 (SIZE)

javascript - FooTables 插件(类似于 DataTables) - 如何从服务器/数据库检索列和行数据