正在尝试将列连接到键\u列\u用法

vmdwslir  于 2021-06-25  发布在  Mysql
关注(0)|答案(1)|浏览(360)

我正在尝试获取以下信息,但连接语法有问题:
我需要以下信息:
表\u架构
表格名称
表\u列
引用表的列类型
表\u架构
引用的表名称
引用的\u表\u列
引用的\u表的列\u类型
我有这个,但不起作用(我知道语法不正确——但这是我的出发点)

select kcu.table_schema, kcu.table_name, kcu.column_name, c.column_type, kcu.referenced_table_schema, kcu.referenced_table_name, kcu.referenced_column_name, c.column_type
from key_column_usage kcu
inner join columns c on kcu.table_schema=c.table_schema and kcu.table_name=c.table_name and kcu.column_name=c.column_name
where kcu.referenced_table_name='table_to_check' and kcu.referenced_column_name='column_to_check';
mzaanser

mzaanser1#

您的查询语法正确,但缺少与 columns 表以获取 column_type 为了 kcu.referenced_column_name -您的版本只加入一次并显示引用 column_type 两次。
第二个连接应该在 referenced_table_schema , referenced_table_name 以及 referenced_column_name 柱。
例如

SELECT kcu.table_schema, kcu.table_name, kcu.column_name, c1.column_type, 
       kcu.referenced_table_schema, kcu.referenced_table_name, 
       kcu.referenced_column_name, c2.column_type
  FROM information_schema.key_column_usage kcu 
  JOIN information_schema.columns c1 
    ON c1.table_schema = kcu.table_schema AND 
       c1.table_name   = kcu.table_name AND 
       c1.column_name  = kcu.column_name
  JOIN information_schema.columns c2 
    ON c2.table_schema = kcu.referenced_table_schema AND 
       c2.table_name   = kcu.referenced_table_name AND 
       c2.column_name  = kcu.referenced_column_name
 WHERE kcu.referenced_table_schema = 'schema_to_check' 
   AND kcu.referenced_table_name   = 'table_to_check' 
   AND kcu.referenced_column_name  = 'column_to_check';

相关问题