伙计我完全是新手..我想要的是删除表中的列只有它存在...任何帮助
这就是我所知道的ALTER TABLE MEN DROP COLUMN Lname
但如果只存在于sql ??
答案 0 :(得分:3)
纯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
答案 1 :(得分:2)
下面的代码可以解决您的问题。
if (exists (SELECT * FROM information_schema.COLUMNS WHERE TABLE_NAME = 'mytable' AND COLUMN_NAME = 'mycolumn'))
begin
ALTER TABLE 'mytable' DROP COLUMN 'mycolumn'
end
答案 2 :(得分:2)
修复了mIhAwk的答案中的语法错误:
if (exists (SELECT * FROM information_schema.COLUMNS WHERE TABLE_NAME = 'mytable' AND COLUMN_NAME = 'mycolumn'))
begin
ALTER TABLE mytable DROP COLUMN mycolumn
end
答案 3 :(得分:1)
正如其他人所说,MySQL不支持DROP COLUMN IF EXISTS
,因此您最好的方法就是运行DROP COLUMN
,如果列不存在则忽略错误。
前段时间我写了一篇关于使用common_schema模拟DROP COLUMN IF EXISTS
的方法。这可能对你有用。有关更多详细信息,请查看相关的blog post。
答案 4 :(得分:0)
IF EXISTS
本身就是一个解决方案! 以下对于MySQL和SqlServer都适用于我-
ALTER TABLE #TempTable DROP COLUMN IF EXISTS [ClientId], [VendorId], [UserId]
它对于多个列也一样具有吸引力!
在 上进行了测试-mysql Ver 15.1发行版10.1.22-MariaDB,用于Win32(AMD64)和SSMS版本14.0.17254.0 < / p>