SQL技术需求:为含[ID]列的表添加[DO LIKE CAKE]列并填充指定值
SQL需求实现方案
下面针对你提到的两个需求,提供不同数据库系统下的实现方法:
1. 为包含[ID]列的表添加[DO LIKE CAKE]列
需要先筛选出有ID列但未包含DO LIKE CAKE列的表,生成对应的ALTER TABLE语句执行即可。
SQL Server版本
-- 生成添加列的SQL语句 SELECT 'ALTER TABLE ' + QUOTENAME(t.name) + ' ADD [DO LIKE CAKE] VARCHAR(50);' -- 可根据实际需求调整数据类型 FROM sys.tables t JOIN sys.columns c_id ON t.object_id = c_id.object_id AND c_id.name = 'ID' LEFT JOIN sys.columns c_cake ON t.object_id = c_cake.object_id AND c_cake.name = 'DO LIKE CAKE' WHERE c_cake.object_id IS NULL;
执行上述查询后,将结果中的SQL语句复制出来执行,就能为符合条件的表添加目标列。
MySQL版本
-- 生成添加列的SQL语句 SELECT CONCAT('ALTER TABLE `', table_name, '` ADD `DO LIKE CAKE` VARCHAR(50);') FROM information_schema.columns WHERE column_name = 'ID' AND table_schema = DATABASE() AND table_name NOT IN ( SELECT table_name FROM information_schema.columns WHERE column_name = 'DO LIKE CAKE' AND table_schema = DATABASE() );
执行查询得到生成的语句后,运行这些语句完成列添加。
2. 为存在[ID]值的行填充[DO LIKE CAKE]列
生成UPDATE语句,对有ID列且已添加DO LIKE CAKE列的表进行更新操作。
SQL Server版本
-- 生成更新列的SQL语句 SELECT 'UPDATE ' + QUOTENAME(t.name) + ' SET [DO LIKE CAKE] = ''value2'' WHERE ID IS NOT NULL;' FROM sys.tables t JOIN sys.columns c_id ON t.object_id = c_id.object_id AND c_id.name = 'ID' JOIN sys.columns c_cake ON t.object_id = c_cake.object_id AND c_cake.name = 'DO LIKE CAKE';
复制查询结果中的SQL语句执行,即可将指定值value2填充到符合条件的行中。
MySQL版本
-- 生成更新列的SQL语句 SELECT CONCAT('UPDATE `', table_name, '` SET `DO LIKE CAKE` = ''value2'' WHERE ID IS NOT NULL;') FROM information_schema.columns WHERE column_name = 'ID' AND table_schema = DATABASE() AND table_name IN ( SELECT table_name FROM information_schema.columns WHERE column_name = 'DO LIKE CAKE' AND table_schema = DATABASE() );
执行生成的UPDATE语句完成值填充。
注意:执行这些操作前,请务必备份数据,或先在测试环境验证语句正确性后再操作生产环境。
内容的提问来源于stack exchange,提问作者La_Cour
相关产品推荐
相关产品推荐

