MySQL 如何在MySQL中删除空白行?

MySQL 如何在MySQL中删除空白行?

在MySQL中删除空白行并不是一件难事。本文将介绍两种方法,一种是使用DELETE语句,另一种是使用SELECT INTO语句。

阅读更多:MySQL 教程

方法一:使用DELETE语句

使用DELETE语句可以直接删除空白行。首先,需要确定哪张表需要删除空白行,以本文使用的测试表test_table为例:

CREATE TABLE test_table (
  id INT(11) NOT NULL AUTO_INCREMENT,
  name VARCHAR(50),
  age INT(11),
  PRIMARY KEY (id)
) ENGINE=InnoDB CHARSET=utf8;

可以使用INSERT语句往test_table表中插入一些数据:

INSERT INTO test_table (name, age) VALUES ('Tom', 18);
INSERT INTO test_table (name, age) VALUES ('Jerry', NULL);
INSERT INTO test_table (name, age) VALUES ('Spike', '');

执行以下DELETE语句,即可删除空白行:

DELETE FROM test_table WHERE name='' OR name IS NULL;

以上SQL语句的作用是选择所有名字为空白的记录,或者所有名字为Null的记录,并将这些记录删除。执行该语句后,test_table表将只剩下一行数据:

id name age
1 Tom 18

方法二:使用SELECT INTO语句

使用SELECT INTO语句也可以删除空白行。首先,使用以下语句创建表:

CREATE TABLE test_table2 (
  id INT(11) NOT NULL AUTO_INCREMENT,
  name VARCHAR(50),
  age INT(11),
  PRIMARY KEY (id)
) ENGINE=InnoDB CHARSET=utf8;

然后,使用以下语句将test_table的有效行插入到test_table2:

SELECT * INTO test_table2 FROM test_table WHERE name != '' AND name IS NOT NULL;

以上SQL语句的作用是从test_table表中选择所有名字不为空白的记录,并将这些记录插入到test_table2表中。执行该语句后,test_table2表将只有一行数据:

id name age
1 Tom 18

此时,test_table和test_table2的id相同,因为它们都是从同一张表test_table中创建的。如果需要保持id不变,可以使用以下语句:

SET @i := 0;
INSERT INTO test_table2 (name, age)
SELECT name, age FROM (
  SELECT name, age, @i := @i+1 AS rn
  FROM test_table
  WHERE name != '' AND name IS NOT NULL
) AS t;

以上SQL语句的作用是选择所有名字不为空白的记录,并插入到test_table2中。每当选择一条记录时,变量@i会自动加1,该记录的行号存储在rn列中。执行该语句后,test_table2表将只剩下一行数据:

id name age
1 Tom 18

结论

这篇文章介绍了如何使用DELETE语句和SELECT INTO语句在MySQL中删除空白行。使用DELETE语句直接删除空白行,使用SELECT INTO语句则将有效行插入到另一张表中。这两种方法都可以有效地删除空白行,选择哪种方法取决于实际需求。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程