2014-09-03 53 views

回答

3

假設你「第3行」num柱值3,你可以試試這個:

UPDATE `Table_A` SET `text` = 'three' WHERE `num` = 3; 
+0

正如我所說的,如果我不知道的任何行的列值。它只是一個例子。現在我告訴我真正想要的是什麼。 – user3443146 2014-09-03 07:23:49

+0

@ user3443146你不能把'ALTER Table_A ADD COLUMN id INT AUTO_INCREMENT;'放到表中然後'UPDATE ... WHERE id = X'?正如其他人指出的那樣,由於多種原因(例如,「INDEX排序」),沒有可靠的方法來按位置標識表格。 – BlitZ 2014-09-03 07:29:24

0
UPDATE table_name 
SET column1=value1,column2=value2,... 
WHERE some_column=some_value; 

UPDATE `Table_A` SET `text` = 'three' WHERE `num` = 3; 
1

「我想更新第3行值」 - 有沒有「第三排」。行中返回的順序應該被視爲隨機(即使它通常不是),除非您專門添加了ORDER子句。

即使那樣,你也不能通過它的位置引用一行;導致UPDATE的查詢無法知道您之前的SELECT所指的是哪一行。你需要一些函數來引用被選擇的行;一些SQL方言具有row_number()的功能,類似於舊的Clipper RECNO。另見here

你可以做的是選擇一些標識值並用它來指到你想要的行(S):

UPDATE `Table_A` SET `text` = 'three' WHERE `num` IN (3); 
UPDATE `Table_A` SET `text` = 'three' WHERE `text` IN ('dont'); 

基於排名(我猜更新表的更多信息,什麼你正在尋找)可以在manual page找到,請參閱關於'recno'的註釋。

0

我想你希望這樣

UPDATE Table_A t1 join (SELECT num,(@Row := @Row + 1) AS row_number 
    FROM Table_A, (SELECT @Row:=0) as row 
) t2 ON t1.num=t2.num 
SET t1.text='three' where t2.row_number='3' 
相關問題