0

大家好,我在 mySQL 中的表有以下更新:

$dbBuilder = '';

foreach($_POST as $key => $value)
{
    if ($value != 'APPROVE') {
        $dbBuilder = $value . ", " . $dbBuilder;
    }
}

$dbBuilder = '(' . rtrim($dbBuilder, ", ") . ')';

UPDATE userCase SET Accepted = 1 WHERE CaseNum in $dbBuilder

工作正常......但现在我需要修改它以允许每个CaseNum 都有一个新的 QNum。

$result = mysql_query("SELECT QNum FROM userCase ORDER BY QNum DESC limit 1");

while($row = mysql_fetch_assoc($result)) {
    $QNum = $row["QNum"] + 1;
    break;
}

UPDATE userCase SET Accepted = 1, QNum = " . $QNum . " WHERE CaseNum in $dbBuilder

以上述方式执行此操作会将 QNum 设置“in”中所有 CaseNum的相同数字。它必须是唯一的(例如,为每个新行在 QNum 中添加 1)。

它只需要比表中的最后一个 QNum 多 1。因此,当有人“批准”一些事情(让我们说 3 件事)时,它会转到上面的查询并且它需要是(假设数据库中的最后一个数字是 4)所以它需要是5,6,7。我现在拥有的代码只会做5,5,5

我将如何在上面的代码中使用相同的CaseNum来完成此操作?

谢谢!

4

1 回答 1

0
UPDATE userCase as u1 set Accepted = 1,
    QNum = (select 
        count(*) 
        from userCase as u2 
        where QNum is not null 
        or (
            u2.CaseNum in (...)
            and u2.CaseNum < u1.CaseNum
        ))
where CaseNum in (...)
于 2013-05-07T19:45:06.930 回答