【问题标题】:Updating the row with the biggest value更新具有最大值的行
【发布时间】:2013-05-27 13:20:17
【问题描述】:

在我的表的“user_id”列中,我想插入刚刚从我的页面注册的用户的 ID。这个想法是将他最近产生的收入与用户 ID 相关联,只是为了发现最终的收入双重登记。

为了做到这一点,我努力更新 user_id 列,在 income_id 具有最大值的行上,即最后产生的收入,但有些东西不起作用。我的代码是:

    $query = "SELECT max( id_income ) FROM `affiliate_income`";
$last_income = mysql_query($query, $conn) or die(mysql_error());
$last = mysql_fetch_assoc($last_income);

        $updtsql = "UPDATE affiliate_income SET `id_user`=".$row_user_code['id_user']."WHERE id_income =".$last;
        $result = mysql_query($updtsql, $conn) or die(mysql_error());

有什么想法吗?

【问题讨论】:

  • 你所说的“有些东西不工作”是什么意思?错误是什么?
  • 您的 SQL 语法有误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“id_income =Array”附近使用正确的语法
  • 但是有些东西不起作用!有什么错误并说明是否有错误!
  • 这意味着 $last 不是字符串。它的数组。所以你必须这样做 id_income =".$last['key'];
  • 检查你的变量 $last。它可能是一个数组而不是收入id

标签: php mysql


【解决方案1】:

其实一个查询就可以搞定,

UPDATE  affiliate_income a
        INNER JOIN (SELECT MAX(id_income) id_income FROM affiliate_income) b    
           ON a.id_income = b.id_income
SET     a.id_user = 'valueHere'

【讨论】:

    【解决方案2】:

    你得到$last 的值作为数组。所以你必须像下面这样给出查询

    $updtsql = "UPDATE affiliate_income SET `id_user`=".$row_user_code['id_user']."WHERE id_income =".$last['id_income'];
    

    【讨论】:

      【解决方案3】:

      您尝试获取最大 id_income,但在第二个查询 (updtsql) 中您尝试找到 id_income = 数组。此外,您不要在 WHERE 子句之前放置空格。

      $query = "SELECT max( id_income ) AS ii FROM `affiliate_income`";
      $last_income = mysql_query($query, $conn) or die(mysql_error());
      $last = mysql_fetch_assoc($last_income);
      
      $updtsql = "UPDATE affiliate_income SET `id_user`=".$row_user_code['id_user']." WHERE id_income =".$last['ii'];
      $result = mysql_query($updtsql, $conn) or die(mysql_error());
      

      【讨论】:

      • 你是对的!我已经进行了更改,现在它运行良好。谢谢你,厄兹坎!
      猜你喜欢
      • 1970-01-01
      • 2023-04-04
      • 1970-01-01
      • 2019-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-24
      相关资源
      最近更新 更多