2017-03-07 46 views
0

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

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 

這是我的表格。我沒有嘗試過任何東西,因爲我不知道可能會導致這種情況。

實際上,爲了添加另一列,我改變了一個表格後發生了問題。

添加列後,出現空行,如果我嘗試修改該行,另一行彈出。

任何人都可以幫助我嗎?

謝謝!

+1

後你已經嘗試 – yogesh84

+0

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 這是我的表。我沒有嘗試過任何東西,因爲我不知道可能會導致這種情況。 – napster235

+0

我想Id有什麼價值? – McNets

回答

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 
0

可以結合並然後測試如果某行的所有NULL值。 首先,試試這個測試:

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

然後,如果返回你想要的一切,繼續和DELETE:

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

DELETE查詢不影響任何行。 – napster235

+0

我測試並驗證了這個解決方案確實有效。當你使用SELECT * FROM yourtable時,它會顯示你正在尋找的結果嗎? – kristech

0

是。 SELECT * FROM表確實顯示了它的內容。但是,我設法發現了困擾我的事情。我創建了兩個不同的表,一個使用'NOT NULL',另一個使用'DEFAULT NULL'。我注意到,包含'NOT NULL'列的表確實創建了一個充滿'NULL'值的額外行,並且包含'DEFAULT NULL'的表沒有這樣做。任何人都可以向我解釋爲什麼?它們之間有什麼不同?

表1:CREATE TABLE test1id INT(11)無符號NOT NULL, Animal VARCHAR(25)NOT NULL, Size VARCHAR(25)NOT NULL, PRIMARY KEY(id) );

表2:CREATE TABLE test2id INT(11)DEFAULT NULL, NAME VARCHAR(25)DEFAULT NULL, CITY VARCHAR(25)DEFAULT NULL );