[英]How do the fields in “SHOW COLUMNS” command map to specific tables?
這是一個名為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中的表編寫視圖嗎?
不,沒有元數據可用於將列視圖映射回基表中的原始列。 這將需要多個表,因為選擇列表中的任何給定表達式都可以引用來自不同表的多個列。
考慮:
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()
這樣的聚合函數,在任何基本表中都找不到該值?
許多視圖根本沒有確定性地從基表中獲取數據。 編輯:我的意思是,並非總是可能知道視圖中的數據源是哪些行或列,因為它們的結果以某種方式組合在一起。 可能更清楚地說,取決於查詢,並非總是可以反向查詢以獲取原始數據。
無法更新這些視圖。 但是,如果存在有關數據“來自何處”的元數據,則元數據中必須有一些內容來表明這一點。 這將是不切實際的,因為它很復雜,而且價值不大。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.