gpt4 book ai didi

php - 更新两个字段对的值返回奇怪的值

转载 作者:行者123 更新时间:2023-11-29 13:49:35 27 4
gpt4 key购买 nike

我的应用程序中有以下查询,用于在将新拳击手添加到我的数据库时修复任何未知的拳击手 ID。为了使系统中的其他查询和功能更容易,添加回合时,boxer_1 ID 始终小于 boxer_2 ID。

下面的函数似乎可以完美地更新/切换 boxer_1boxer_2 字段,但是 boxer_1_weightboxer_2_weight 值得到奇怪的结果,我不知道为什么?

"UPDATE bouts b1, bouts b2 SET b1.unknown_global_id = 0,
b1.winner = IF(b2.winner = -3, IF(b1.boxer_1 = 0, '" . $boxer_id . "', b1.boxer_1), IF(b2.winner = -2, IF(b1.boxer_2 = 0, '" . $boxer_id . "', b1.boxer_2), b1.winner)),
b1.boxer_1 = IF(b1.boxer_1 = 0, IF('" . $boxer_id . "' > b1.boxer_2, b1.boxer_2, '" . $boxer_id . "'), IF(b1.boxer_1 < '" . $boxer_id . "', b1.boxer_1, '" . $boxer_id . "')),
b1.boxer_2 = IF(b1.boxer_2 = 0, IF('" . $boxer_id . "' < b2.boxer_1, b2.boxer_1, '" . $boxer_id . "'), IF(b1.boxer_2 > '" . $boxer_id . "', b1.boxer_2, '" . $boxer_id . "')),
b1.boxer_1_weight = IF(b2.boxer_1 = 0, IF('" . $boxer_id . "' > b2.boxer_2, b2.boxer_2_weight, b2.boxer_1_weight), IF(b2.boxer_1 < '" . $boxer_id . "', b2.boxer_1_weight, b2.boxer_2_weight)),
b1.boxer_2_weight = IF(b2.boxer_2 = 0, IF('" . $boxer_id . "' < b2.boxer_1, b2.boxer_1_weight, b2.boxer_2_weight), IF(b2.boxer_2 > '" . $boxer_id . "', b2.boxer_2_weight, b2.boxer_1_weight))
WHERE b1.unknown_global_id = '" . (int)$global_id . "'"

boxer_1/boxer_2 字段为 INT(11),boxer_1_weight/boxer_2_weight 字段为十进制(10,1)

举个例子,如果权重字段以权重 186.5 和 199.7 开始,则运行查询后它们最终都为 239.8,但拳击手 ID 是正确的。

最佳答案

您需要一个连接条件来避免将 b1 中的所选行与 b2 中的所有其他行进行比较。

"UPDATE bouts b1
JOIN bouts b2 ON b1.bout_id = b2.bout_id
SET b1.unknown_global_id = 0,
b1.winner = IF(b2.winner = -3, IF(b1.boxer_1 = 0, '" . $boxer_id . "', b1.boxer_1), IF(b2.winner = -2, IF(b1.boxer_2 = 0, '" . $boxer_id . "', b1.boxer_2), b1.winner)),
b1.boxer_1 = IF(b1.boxer_1 = 0, IF('" . $boxer_id . "' > b1.boxer_2, b1.boxer_2, '" . $boxer_id . "'), IF(b1.boxer_1 < '" . $boxer_id . "', b1.boxer_1, '" . $boxer_id . "')),
b1.boxer_2 = IF(b1.boxer_2 = 0, IF('" . $boxer_id . "' < b2.boxer_1, b2.boxer_1, '" . $boxer_id . "'), IF(b1.boxer_2 > '" . $boxer_id . "', b1.boxer_2, '" . $boxer_id . "')),
b1.boxer_1_weight = IF(b2.boxer_1 = 0, IF('" . $boxer_id . "' > b2.boxer_2, b2.boxer_2_weight, b2.boxer_1_weight), IF(b2.boxer_1 < '" . $boxer_id . "', b2.boxer_1_weight, b2.boxer_2_weight)),
b1.boxer_2_weight = IF(b2.boxer_2 = 0, IF('" . $boxer_id . "' < b2.boxer_1, b2.boxer_1_weight, b2.boxer_2_weight), IF(b2.boxer_2 > '" . $boxer_id . "', b2.boxer_2_weight, b2.boxer_1_weight))
WHERE b1.unknown_global_id = '" . (int)$global_id . "'"

关于php - 更新两个字段对的值返回奇怪的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16871531/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com