我想知道是否可以在 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/