gpt4 book ai didi

mysql - 如何查找具有引用特定 table.column 的外键并具有这些外键值的所有表?

转载 作者:行者123 更新时间:2023-11-29 15:30:25 25 4
gpt4 key购买 nike

我有一个表,其主键在其他几个表中作为外键引用。例如:

  CREATE TABLE `X` (
`X_id` int NOT NULL auto_increment,
`name` varchar(255) NOT NULL,
PRIMARY KEY (`X_id`)
)
CREATE TABLE `Y` (
`Y_id` int(11) NOT NULL auto_increment,
`name` varchar(255) NOT NULL,
`X_id` int DEFAULT NULL,
PRIMARY KEY (`Y_id`),
CONSTRAINT `Y_X` FOREIGN KEY (`X_id`) REFERENCES `X` (`X_id`)
)
CREATE TABLE `Z` (
`Z_id` int(11) NOT NULL auto_increment,
`name` varchar(255) NOT NULL,
`X_id` int DEFAULT NULL,
PRIMARY KEY (`Z_id`),
CONSTRAINT `Z_X` FOREIGN KEY (`X_id`) REFERENCES `X` (`X_id`)
)

现在,我不知道数据库中有多少表包含 X 中的外键,例如表 Y 和 Z。是否有一个 SQL 查询可以用来返回:

  1. 具有 X 外键的表列表
  2. 以及哪些表的外键中实际有值

最佳答案

给你:

SELECT *
FROM
information_schema.KEY_COLUMN_USAGE
WHERE
REFERENCED_TABLE_NAME = 'X'
AND REFERENCED_COLUMN_NAME = 'X_id';

如果您有多个具有相似表/列名称的数据库,您可能还希望将查询限制到特定数据库:

SELECT *
FROM
information_schema.KEY_COLUMN_USAGE
WHERE
REFERENCED_TABLE_NAME = 'X'
AND REFERENCED_COLUMN_NAME = 'X_id'
AND TABLE_SCHEMA = 'your_database_name';

关于mysql - 如何查找具有引用特定 table.column 的外键并具有这些外键值的所有表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58772070/

25 4 0