我想知道如何删除每列中只有空值的行。
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
这是我的桌子。我没有尝试任何东西,因为我不知道是什么原因造成的。
实际上,在我更改表格以添加另一列后发生了问题。
添加列后,出现一个空行,如果我尝试修改该行,则会弹出另一行。
任何人都可以帮助我吗?
谢谢!
答案 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
);