2013-04-07 121 views
-1

在此表中刪除從MySQL表中的一行,並修改特定領域

mysql> select * from classics; 
+--------------------------+------------------------------+-----------------+------+-------+---------------+ 
| author     | title      | category  | year | pages | isbn   | 
+--------------------------+------------------------------+-----------------+------+-------+---------------+ 
| Mark Twain (S.L.Clemens) | the adventures of tom sawyer | Classic Fiction | 1876 | 65535 |    | 
| Charles Dickens   | A Christmas Carol   | Classic Fiction | 1849 | 50 | 23423664  | 
| NULL      | NULL       | NULL   | NULL | NULL | 23242362346 | 
+--------------------------+------------------------------+-----------------+------+-------+---------------+ 

如何刪除最後一行,並設置在第一行的ISBN號? 我正在嘗試這樣的:

alter table classics drop ?? where author=NULL; 
insert into classics(isbn) values('234525246') where title like "%adventures%"; 

如何正確地做到這一點?

+0

如果你有兩個連續的作者有'NULL' isbn?最後一個值將被插入到哪裏? – 2013-04-07 10:31:44

+0

考慮使用'NULL'和'ISNULL' MySQL函數。 – Harpreet 2013-04-07 10:34:28

+0

@TMOTTM:我沒有downvote。但我的猜測是,這是因爲你在問一個非常基礎的問題。在使用它之前,你應該真正閱讀SQL。 – 2013-04-07 10:41:21

回答

1

您需要2條語句。要刪除行使用delete

delete from classics 
where author IS NULL; 

要在現有行中更新的值使用update

update classics 
set isbn = '234525246' 
where title like '%adventures%'; 

alter是用來改變一個表的結構,而不是它的內容。
insert用於將新數據插入到表中,而不是修改現有數據。

+0

絕對。謝謝。 – 2013-04-07 10:36:45

+0

@TMOTTM:或者使用'IS NULL'而不是'= NULL'。比較某些東西到'NULL'總是會導致'未知'。這就是爲什麼你必須使用'IS'運算符進行'NULL'比較。 – 2013-04-07 10:38:57