我这里有一个来自this source的SQL查询。它的作用是在数据库中找到所有主键及其引用。
select
concat(table_name, '.', column_name) as 'foreign key',
concat(referenced_table_name, '.', referenced_column_name) as 'references'
from
information_schema.key_column_usage
where
referenced_table_name is not null
and table_schema = 'my_database'
我修改了一点就成了这个
select
table_name as fk_table_name, column_name as 'foreign key',
referenced_table_name as ref_table_name, referenced_column_name as 'references'
from
information_schema.key_column_usage
inner join
information_schema.referenced_table_name
where
referenced_table_name is not null
and column_name = 'customer_number'
and referenced_table_name = 'accepted_orders'
现在它不起作用。它返回的错误是'#1109 - information_schema'中的未知表'referenced_table_name'。我的目标不是仅显示引用的列名称,而是为我提供该列的所有值。
因此,我没有告诉我accepted_orders中的外键customer_number引用customer_records中的主键customer_number,而是希望在customer_records中获取customer_number的所有值。
我想过在查询结果上使用内连接,但显然它不会让我。我该怎么做呢?我是否必须使用单独的SQL语句?
答案 0 :(得分:0)
正如错误消息所示,您似乎是在查询解析器需要表名而不是列名的上下文中使用referenced_table_name
。你写道:
inner join
information_schema.referenced_table_name
这没有任何意义,因为你正在尝试加入一个列,而不是一个表。
尝试从查询中省略上面两行。