gpt4 book ai didi

mysql - "SHOW COLUMNS"命令中的字段如何映射到特定表?

转载 作者:行者123 更新时间:2023-11-29 18:09:58 24 4
gpt4 key购买 nike

这是一个名为 viewwithcommonfield 的 View :

SELECT 
`schematopologytest01`.`talpha`.`CommonField` AS `CommonField_tAlpha`,
`schematopologytest01`.`tbeta`.`CommonField` AS `CommonField_tBeta`
FROM
(`schematopologytest01`.`talpha`
JOIN `schematopologytest01`.`tbeta`)

当我执行时

SHOW FULL fields FROM viewwithcommonfield IN SchemaTopologyTest01

我明白了: Results of SHOW FULL...

如何将字段映射回特定表?我可以针对 information_schema 中的表编写 View 吗?

以下是 View 中引用的表结构。这些表共享一个名为 CommonField 的公共(public)字段: enter image description here

最佳答案

不,没有可用的元数据可将列 View 映射回基表中的原始列。这将需要多个表,因为选择列表中的任何给定表达式都可能引用不同表中的多个列。

考虑:

SELECT CONCAT(
`schematopologytest01`.`talpha`.`AlphaFieldA`,
`schematopologytest01`.`tbeta`.`BetaFieldE`) AS `ConcatenatedField`
FROM `schematopologytest01`.`talpha`
JOIN `schematopologytest01`.`tbeta` ON ...

ConcatenatedField 将哪个表和列列为其来源?它必须存储在另一个 INFORMATION_SCHEMA 表的两行中。

View 中也可能存在不引用任何基表的选择列表表达式:

CREATE VIEW ViewNow AS SELECT NOW() AS `now`;

如果列本身就是标量子查询呢?或者对存储函数的引用?或者像 COUNT()SUM() 这样的聚合函数,在任何基表中都找不到该值?

许多 View 根本没有确定性地从基表中派生数据。编辑:我的意思是,并不总是能够知道哪些行或列是 View 中的数据源,因为它们的结果以某种方式组合。更清楚的说法可能是,逆向查询以获取原始数据并不总是可行,具体取决于查询。

无法更新这些 View 。但是,如果存在关于数据“来自”何处的元数据,则元数据中必须有一些内容来表明这一点。这是不切实际的,因为它很复杂,而且没有什么值(value)。

关于mysql - "SHOW COLUMNS"命令中的字段如何映射到特定表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47487156/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com