Sql-Server
MySQL:對於每個列,如果不存在則創建?
我是一名學生,正在嘗試為我的表創建一個列,但前提是它不存在。我確實遇到了一個解決方案:
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