php - MySQL : How to set to same position if row value is the same?

标签 php mysql

position    | Average |   gpmp

1             70.60         2.0     
2             60.20         2.3    
3             59.80         4.8    
4             59.80         4.8     
5             45.70         5.6     

大家好,

如上表,我需要按照最低的gpmp和最高的平均值来排列位置。但是当 average 和 gmp 相同时,我将需要有相同的位置。

比如位置3和4的average和gpmp是一样的。我如何生成 mysql 查询或使用 php 函数,以便在它们检测到相同的平均值和 gpmp 并将位置 4 更改为 3 之后。

也就是说函数生成后会变成下表的样子。

position    | Average |   gpmp

1             70.60         2.0     
2             60.20         2.3    
3             59.80         4.8    
3             59.80         4.8     
5             45.70         5.6    

最佳答案

这是一种更新表格的简单方法,如您在帖子中所述 - 获取顺序位置并相应地更新它们。它不计算位置或任何东西,只使用已经存在的数据:

UPDATE `table` t SET position = (
    SELECT MIN(position) FROM (SELECT * FROM `table`) t2 WHERE t.Average = t2.Average AND t.gpmp = t2.gpmp
)

关于php - MySQL : How to set to same position if row value is the same?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10230559/

相关文章:

php - 我应该使用 PHP 还是 CSS 来生成 "hide"html?

php - 如何捕获属于不同步骤/数组/位置的两个标签之间的多行正则表达式

php - 如果有数百万用户,如何在用户提交后立即使用 php 从 mysql 获取详细信息

python - 在 OS X 上设置 Python Web 开发环境

mysql - 如何比较两个表的主键,这是五列的组合?

php - 显示 mysql_real_escape_string() 之后实际传递到服务器的内容

php - Composer : Require a specific version of a non-required package

php - 无法从 PDO 数组获取值

MySQL 查询或过程从多行计算的值返回表

mysql - INNODB:什么结束了交易?