我不太精通DDL。我假设它们是ALTER
的WHERE
子句,经过一些研究,我现在了解到WHERE
子句对于ALTER
命令是不存在的。如何处理我们可能需要在ALTER
命令中检查某些条件的情况?
Mysql Drop column where all row value is null
例如,对于上面的问题,如果我想写下面这样的代码,我该怎么做呢?
ALTER TABLE my_table DROP col
WHERE NOT EXISTS (SELECT * FROM my_table
WHERE col IS NOT NULL)
有没有什么标准的SQL方法来实现这一点?如果没有,谁能为各种数据库(SQL Server、MySQL、Oracle、PostgreSQL)提供这样做的方法?
发布于 2014-10-13 11:07:47
不能只删除表中某些行的列。表要么有列,要么没有列。这就是为什么ALTER
没有WHERE
子句的原因。
似乎只有在表中的所有值都为NULL
时,您才会删除此列。您需要的是一条IF
语句。
更新:
SELECT CASE
WHEN NOT EXISTS (SELECT * FROM my_table WHERE col IS NOT NULL)
THEN 'Y'
ELSE 'N'
END AS my_result
IF my_result = 'Y'
ALTER TABLE...
https://stackoverflow.com/questions/26332310
复制相似问题