mysql - 是否可以在InnoDB表中使用Mysql外键进行逆向查找?

标签 mysql innodb

我想知道是否可以在 Mysql (InnoDB) 中使用 FK 进行逆向查找。

原因 - 我想从数据库中读取类似 XML 的结构(每个“层”使用一个表),但能够动态地执行此操作。我希望能够通过添加新表和设置 FK 约束来更新 xml 结构。

为了澄清,假设我们有一个表“parent”,其中包含 id (parent_id) 和另外两个列(k1 和 k2)。 xml 看起来像(省略 id):

<parent>
 <k1>v1</k1>
 <k2>v2</k2>
</parent>

现在我们添加一个子表,其外键引用 parent_id 和另一列 (ck1)。相同的查询(之后进行一些处理)现在应该给出:

<parent>
 <k1>v1</k1>
 <k2>v2</k2>
 <child>
  <ck1>cv1</ck1>
 </child>
</parent>

这可能吗?要“SELECT * FROM parent_table”并设置某种参数以返回带有 FK 的子行?

非常感谢! /维克多

最佳答案

在阅读了很多之后,一种选择是使用类似的东西:

SELECT
  referenced_table_name parent,
  table_name child,
FROM
  information_schema.KEY_COLUMN_USAGE
WHERE
  referenced_table_name IS NOT NULL

这给出了所有有 child 的表。过滤以仅将子项返回给所请求的父项当然很容易。然而,不利的一面是,将需要上述额外的查询(和处理)。

我仍然希望获得“更好”的解决方案,但这至少是一个开始 ;)

关于mysql - 是否可以在InnoDB表中使用Mysql外键进行逆向查找?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1058934/

相关文章:

mysql - INNODB -> 默认列应该为零还是空?

mysql - InnoDB : create foreign key with explicit index name

mysql - 如何实现基于数据库锁定的防止重复的保护

mysql - 应用程序在生产环境中运行时更改 mysql 存储引擎的后果

MySQL服务器访问

php - 如何使用多个值和 SELECT 语句插入?

php - 错误 : Object of class stdClass could not be converted to string -- implode() -- php

mysql - Active Record 零时间戳

mysql - 如何优化具有多个外连接到大表、group by 和 order by 子句的查询的执行计划?

MySQL 5.5.9 和 mysql.proc 错误