查找外键引用字段的值

时间:2014-03-21 00:34:45

标签: mysql foreign-key-relationship

我这里有一个来自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语句?

1 个答案:

答案 0 :(得分:0)

正如错误消息所示,您似乎是在查询解析器需要表名而不是列名的上下文中使用referenced_table_name。你写道:

inner join
   information_schema.referenced_table_name

这没有任何意义,因为你正在尝试加入一个列,而不是一个表。

尝试从查询中省略上面两行。