如何删除每列中只有空值的行?

时间:2017-03-07 13:41:20

标签: mysql

我想知道如何删除每列中只有空值的行。

CREATE TABLE taxes 
( 
    id int(11) NOT NULL, 
    Name varchar(255) DEFAULT NULL, 
    Person varchar(255) DEFAULT NULL, 
    Price int(11) DEFAULT NULL, 
    Year varchar(255) DEFAULT NULL, 
    PRIMARY KEY (id) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 

这是我的桌子。我没有尝试任何东西,因为我不知道是什么原因造成的。

实际上,在我更改表格以添加另一列后发生了问题。

添加列后,出现一个空行,如果我尝试修改该行,则会弹出另一行。

任何人都可以帮助我吗?

谢谢!

3 个答案:

答案 0 :(得分:0)

首先尝试:

SELECT Id
FROM   taxes
WHERE  Name IS NULL
AND    Person IS NULL
AND    Price IS NULL 
AND    Year IS NULL;

如果它返回受影响的行,则使用DELETE。

DELETE FROM   taxes
WHERE  Id IN (SELECT Id
              FROM   taxes
              WHERE  Name IS NULL
              AND    Person IS NULL
              AND    Price IS NULL 
              AND    Year IS NULL);

OR

DELETE FROM   taxes
WHERE  Name IS NULL
AND    Person IS NULL
AND    Price IS NULL 
AND    Year IS NULL

答案 1 :(得分:0)

您可以COALESCE然后测试一行是否包含所有NULL值。 首先,试试这个来测试:

SELECT * FROM yourtable
WHERE COALESCE(column1,column2,column3) IS NULL

然后,如果它返回您想要的所有内容,请继续并删除:

DELETE FROM yourtable
WHERE COALESCE(column1,column2,column3) IS NULL

答案 2 :(得分:0)

是。 SELECT * FROM表确实显示了它的内容。但是,我设法发现了困扰我的事情。我创建了两个不同的表,一个是' NOT NULL'和一个' DEFAULT NULL'。我注意到包含' NOT NULL'的表格。对于列,确实会创建一个额外的行,其中包含“空白”和“空白”。值和包含' DEFAULT NULL'的表不这样做。任何人都可以向我解释原因吗?它们之间的区别是什么?

表1:CREATE TABLE test1(   id int(11)unsigned NOT NULL,   Animal varchar(25)NOT NULL,   Size varchar(25)NOT NULL,   主要关键(id) );

表2:CREATE TABLE test2(   id int(11)DEFAULT NULL,   NAME varchar(25)DEFAULT NULL,   CITY varchar(25)DEFAULT NULL );