2017-04-06 44 views
1

我是全新手..我想要的是隻刪除表中的一列如果它存在...任何幫助 這裏是我所知道的ALTER TABLE MEN DROP COLUMN Lname但是如何讓它存在只在sql?只有在存在於sql中時才刪除列

+0

ALTER TABLE [table] DROP COLUMN [column]語句沒有「IF EXISTS」選項 –

+0

那麼我該怎麼做? –

+1

http://stackoverflow.com/questions/173814/mysql-alter-syntax-to-drop-a-column-if-it-exists,http://stackoverflow.com/questions/30307935/how-to-drop -column-from-table-if-012 – ADyson

回答

2

你想要做的事情在純粹的MySQL語法中是不可能的。但是,如果您在應用程序中使用API​​或其他東西作爲後端。您可以執行以下操作。

IF (SELECT COUNT(*) 
      FROM table_name.columns 
      WHERE 
      TABLE_SCHEMA = 'database_name' 
      AND TABLE_NAME = 'table_name' 
      AND COLUMN_NAME = 'column_name'>0) 
BEGIN 
ALTER TABLE table_name DROP COLUMN column_name 
END 
+0

這不是你可以做的事... –

0

下面的代碼解決您的問題。

if (exists (SELECT * FROM information_schema.COLUMNS WHERE TABLE_NAME = 'mytable' AND COLUMN_NAME = 'mycolumn')) 
begin 
    ALTER TABLE 'mytable' DROP COLUMN 'mycolumn' 
end 
+1

語法錯誤如果在這個位置無效 –

+0

我該怎麼辦? –

1

正如其他人所提到的,MySQL不支持DROP COLUMN IF EXISTS,所以最好的辦法是簡單地運行DROP COLUMN,並忽略錯誤,如果列不存在。

後來我寫了一個使用common_schema來模擬DROP COLUMN IF EXISTS的方法。這可能對你有用。查看相關blog post瞭解更多詳情。

相關問題