【问题标题】:How to add incremental values to mysql database after sorting entries排序条目后如何将增量值添加到mysql数据库
【发布时间】:2018-08-13 12:50:22
【问题描述】:

ID |姓氏 |名字 |已订购

1 |史密斯 |约翰 |

2 |史密斯 |拉里 |

3 |琼斯 |弗雷德|

4 |约翰逊 |托德 |

期望的结果:使用按字母顺序递增的值更新 Ordered 字段。

1 |史密斯 |约翰 | 3

2 |史密斯 |拉里 | 4

3 |琼斯 |弗雷德 | 2

4 |约翰逊 |托德 | 1

$result = mysql_query("SELECT * FROM MyDatabase ORDER by 
LastName,FirstName");

$N=0;

while ($row = mysql_fetch_array( $result )) 
    {
    mysql_query("
    UPDATE MyDatabase
    SET Ordered = $N + 1
    WHERE ...");

   }

我知道我需要 WHERE,但我似乎无法使任何 WHERE 子句起作用。我总是在 Ordered 字段中得到所有相同的数字。什么会使这项工作按预期进行?

【问题讨论】:

  • 好吧,我想通了。只需要获取行号并将其与 ID 字段进行比较。

标签: mysql


【解决方案1】:

听起来您首先需要获取结果集中所有行的总数(因为您是从高到低存储的,所以您需要知道高位)。然后在 UPDATE / 循环期间减少该值

【讨论】:

    【解决方案2】:

    好吧,我想出办法让它发挥作用。只需要获取该行,然后将其与 ID 字段进行比较,如下所示:

    $result = mysql_query("SELECT * FROM MyDatabase ORDER by LastName, FirstName");
    
    $N=1;
    
    while ($row = mysql_fetch_array( $result )) 
    {
    $updateid = $row['ID'];
    mysql_query("
    UPDATE MyDatabase
    SET Ordered = $N
    WHERE ID='$updateid'");
    $N++;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-19
      • 2012-07-01
      • 2015-01-02
      • 1970-01-01
      相关资源
      最近更新 更多