Sql-Server

MySQL:對於每個列,如果不存在則創建?

  • August 11, 2022

我是一名學生,正在嘗試為我的表創建一個列,但前提是它不存在。我確實遇到了一個解決方案:

SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA="bd_company" AND TABLE_NAME="users" AND column_name="user_age";

如果它返回 0 表示它不存在,所以我可以創建它。但我的問題是:如果我想為 5 列執行此操作怎麼辦?

就像一個 for 循環……類似“對於每一列,執行 SELECT COUNT(*)…… 如果不存在,則創建表”

這可能嗎?對不起,如果這是一個愚蠢的問題,我真的不知道,但無論如何都想知道……我有 SQL Server Management Studio 和 MySQL Workbench。我可以同時使用場景和解決方案。

提前致謝。

在使用 column_name 傳遞列名時,您可以使用 IN 而不是 =。例如。: column_name IN (‘cn1’,‘cn2’,‘cn3’,‘cn4’,‘cn5’)。

您可以創建一個包含預期列的表並減去現有列。例子

SELECT tt.c 
FROM ( VALUES ('c1'), ('c2'),('c3')) tt(c)
LEFT JOIN information_schema.columns c
   ON tt.c = c.column_name
WHERE c.column_name is null

現在您可以遍歷這些列,構造語句並執行它。

也就是說,使用維護數據模型的工具會更好。看看例如Flyway

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