更新具有最大值的行

时间:2013-05-27 05:10:15

标签: php mysql

在我的表的“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());

任何想法?

3 个答案:

答案 0 :(得分: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'

答案 1 :(得分:0)

您尝试获取最大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());

答案 2 :(得分:0)

您将$last的值作为数组。因此,您必须像以下一样提供查询

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