如何使用SQL将原表中空lati、longi列的行复制到新表?
实现需求的SQL命令
要将原表中lati和longi字段均为空的记录保存到新表中,可根据使用的数据库类型选择以下方案:
核心逻辑
筛选出lati和longi为空的记录,将其插入到新表中。注意:SQL中空值用NULL表示,判断空值需用IS NULL而非等于符号。
方案一:先创建新表结构,再插入数据
假设原表名为original_table,新表名为empty_coords_table:
创建与原表结构一致的空新表:
- MySQL:
CREATE TABLE empty_coords_table LIKE original_table; - PostgreSQL:
CREATE TABLE empty_coords_table AS SELECT * FROM original_table LIMIT 0; - SQL Server:
SELECT TOP 0 * INTO empty_coords_table FROM original_table;
- MySQL:
插入符合条件的记录:
INSERT INTO empty_coords_table (id, name, lati, longi) SELECT id, name, lati, longi FROM original_table WHERE lati IS NULL AND longi IS NULL;
方案二:一步创建新表并插入数据
直接通过查询结果生成新表并填充数据,无需单独创建表结构:
- MySQL:
CREATE TABLE empty_coords_table AS SELECT id, name, lati, longi FROM original_table WHERE lati IS NULL AND longi IS NULL; - PostgreSQL/SQL Server:
SELECT id, name, lati, longi INTO empty_coords_table FROM original_table WHERE lati IS NULL AND longi IS NULL;
特殊情况说明
如果原表中的“空”是指空字符串(而非NULL),则将WHERE条件修改为:
WHERE lati = '' AND longi = ''
内容的提问来源于stack exchange,提问作者Zembla
相关产品推荐
相关产品推荐

