这是一个名为viewwithcommonfield的视图:
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
如何将字段映射回特定表格?我可以针对information_schema中的表编写视图吗?
答案 0 :(得分:0)
不,没有可用于将列的视图映射回基表中的原始列的元数据。这将需要多个表,因为select-list中的任何给定表达式可能引用来自不同表的多个列。
考虑:
SELECT CONCAT(
`schematopologytest01`.`talpha`.`AlphaFieldA`,
`schematopologytest01`.`tbeta`.`BetaFieldE`) AS `ConcatenatedField`
FROM `schematopologytest01`.`talpha`
JOIN `schematopologytest01`.`tbeta` ON ...
哪个表和列ConcatenatedField
列为其来源?它必须存储在另一个INFORMATION_SCHEMA表的两行中。
在视图中还有一些选择列表表达式可以不引用任何基表:
CREATE VIEW ViewNow AS SELECT NOW() AS `now`;
那些本身是标量子查询的列呢?或者对存储函数的引用?或者像COUNT()
或SUM()
之类的聚合函数,其中的值在任何基表中都找不到?
许多视图根本没有确定性地从基表中获取数据。编辑:我的意思是,并不总是可以知道哪些行或列是视图中的数据源,因为它们的结果以某种方式组合在一起。可能更清楚的是,反转查询以获取原始数据并非总是可行,具体取决于查询。
无法更新这些观看次数。但如果有关于数据来源的元数据,"元数据中必须有一些东西来表明这一点。这是不切实际的,因为它很复杂,价值不大。