2015-01-21 48 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