我想知道如何删除每列中只有空值的行。
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
这是我的桌子。我什么都没尝试,因为我不知道会导致这一点。
实际上,我更改表以添加另一列后发生了问题。
添加了列后,出现了一个空行,如果我尝试修改该行,另一个会弹出。
有人可以帮我吗?
谢谢!
第一次尝试:
SELECT Id
FROM taxes
WHERE Name IS NULL
AND Person IS NULL
AND Price IS NULL
AND Year IS NULL;
如果它返回受影响的行,请使用删除。
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);
或
DELETE FROM taxes
WHERE Name IS NULL
AND Person IS NULL
AND Price IS NULL
AND Year IS NULL
您可以合并,然后测试一行是否具有所有空值。首先,尝试测试:
SELECT * FROM yourtable
WHERE COALESCE(column1,column2,column3) IS NULL
然后,如果返回您想要的一切,请继续删除:
DELETE FROM yourtable
WHERE COALESCE(column1,column2,column3) IS NULL
是。从表中选择 *确实显示其内容。但是,我设法发现了困扰我的东西。我创建了两个不同的表格,一个具有"非null",另一个带有"默认为null"。我注意到包含"非null"的表确实创建了一个充满" null"值的额外行,并且包含"默认null"的表不执行此操作。谁能向我解释为什么?他们之间有什么区别?
表1:创建表test1
( id
int(11)未签名而不是null, Animal
VARCHAR(25)不为空, Size
VARCHAR(25)不为空, 主键(id
));
表2:创建表test2
( id
int(11)默认为空, NAME
VARCHAR(25)默认为空, CITY
VARCHAR(25)默认值);