2015-01-21 69 views
-1

我在這裏遇到問題。即時更新名稱,其中B具有最大價值。數據庫中的更新列,其中最大值php mysql

所以結果是

B | name 
---|------ 
1 | 
2 | 
3 | YES 

但是當塔B的變化價值問題是列名與行值3仍具有的值。

B | name 
---|------ 
1 | 
4 | YES 
3 | YES 

結果應該是。

B | name 
---|------ 
1 | 
4 | YES 
3 | 

如果

B | name 
---|------ 
0 | 
0 | 
0 | 

然後

B | name 
---|------ 
0 | 
0 | 
0 | 

如果,

B | name 
---|------ 
4 | 
4 | 
2 | 

然後

B | name 
---|------ 
4 | YES 
4 | YES 
2 | 

這就是我想要的。

即時通訊只使用這個簡單的代碼。

$sql3 = "UPDATE products SET name='YES' ORDER BY B DESC"; 
+0

也許只是加上'WHERE B> 0'? – 2015-01-21 00:34:44

+0

你需要使用'WHERE'子句。 – 2015-01-21 00:35:01

+0

你是否只需要一個'name'就是'yes',其他所有其他的都是空的? – 2015-01-21 00:35:41

回答

0

我想你想更新列中B列的最高值的行?你一定需要一個「WHERE」子句,但你也需要知道該列中的最高值。爲什麼不先查詢數據庫以從列B中檢索最高值?

$maxvalue = "SELECT `B` FROM products ORDER BY `B` DESC LIMIT 1" 

然後插入數據庫WHERE列B等於這個值嗎?

"UPDATE products SET name='YES' WHERE B = $maxvalue" 

這不是完整的代碼,只是概念。我將它清理乾淨,然後編輯這個答案...

+0

我的代碼已經在工作 $ sql3 =「UPDATE products SET name ='YES'ORDER BY B DESC」; 但我的問題是,一旦B的值如上所示改變,B = 3的列名仍然具有值YES。 – Smurf 2015-01-21 00:51:00

-1

您必須運行UPDATE products set name = '';每次然後:

UPDATE products set name = 'YES' 
WHERE B > 0 
ORDER BY B DESC 
+0

WHERE B> 0將匹配1,2,3,4等.OP想要最高的「B」值。 – 2015-01-21 00:48:28

+0

ORDER BY B DESC LIMIT 1將完成這項工作 – 2015-01-21 00:49:16

+0

我傾向於認爲使用MAX()或HAVING會更好,按照http://www.mysqltutorial.org/mysql-max-function/這只是我;-)然而,OP的問題有點不清楚,他們是想做所有的匹配,還是隻有一個。 – 2015-01-21 00:50:13