Mysql

Mysql View 只用靜態值替換一列?

  • July 19, 2022
CREATE VIEW `myview` AS select * from mytable

是否可以在視圖中僅用靜態值替換一列?例如mytable.myvalue = 'view'?或者我是否必須列出選擇中的所有列,例如:

CREATE VIEW `myview` AS 
 select col1
      , col2
      , ...
      , coln
      , 'view' as myvalue 
   from mytable

上面的評論給出了正確的答案,因為沒有萬用字元表示“除了我不想要的列之外的所有列”。

如果你想要一個額外的列,你可以使用萬用字元:

CREATE VIEW `myview` AS select *, 'view' as myvalue from mytable

但是,如果您希望將與萬用字元匹配的列之一替換為您的常量值,則必須拼出這些列。

這裡有一個技巧可以使它更容易:當您*在視圖的定義中使用時,MySQL 會將其擴展為列名。然後您可以使用SHOW CREATE VIEW myview它,它將顯示一個完整的 CREATE VIEW 語句,其中所有列都顯式命名。然後,您可以使用滑鼠將該字元串複製並粘貼到任何編輯器界面中,因此您不必鍵入所有列。您只需要在兩個地方編輯它:

CREATE OR REPLACE VIEW `myview` AS 
      ^^^^^^^^^^ add this
 select col1
      , col2
      , ...
      , coln
      , 'view' as myvalue 
        ^^^^^^^^^^^^^^^^^ omit the column you don't want, and add the constant
   from mytable

然後您可以執行編輯後的版本,它會用您想要替換的一列的新視圖替換您創建的初始視圖。

引用自:https://dba.stackexchange.com/questions/314570