簡體   English   中英

“ SHOW COLUMNS”命令中的字段如何映射到特定表?

[英]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

我得到這個: SHOW FULL ...的結果

如何將字段映射回特定表? 我可以針對information_schema中的表編寫視圖嗎?

這是視圖中引用的表結構。 這些表共享一個稱為CommonField的公共字段: 在此處輸入圖片說明

不,沒有元數據可用於將列視圖映射回基表中的原始列。 這將需要多個表,因為選擇列表中的任何給定表達式都可以引用來自不同表的多個列。

考慮:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM