gpt4 book ai didi

php - 根据相同或不同的值检查并更新行

转载 作者:行者123 更新时间:2023-11-29 10:48:17 25 4
gpt4 key购买 nike

如果所有行值设置为相同的值,我将尝试更新状态。

我的查询是这样的

$ord = "SELECT * FROM plitems WHERE pur_order_id='".$order_id."'";
$ord1 = mysqli_query($con, $ord);

while($ord2 = mysqli_fetch_array($ord1)) {

if(($ord2['invoice_status']=='Invoiced'))
{
$m5 = mysqli_query($con, "UPDATE pur_orders SET status='Invoiced' WHERE pur_order_id='".$order_id."'");

}
else
{
$m5 = mysqli_query($con, "UPDATE pur_orders SET status='Partial' WHERE pur_order_id='".$order_id."'");

}

但是这里我在plitems表中有2个行项目,第一个行项目状态是已开票,第二个行项目状态是部分,但是仍然将 pur_orders 状态设置为已发票,而不是 Partial

最佳答案

使用使用 GROUP BY 的查询来查找状态全部相同的订单。

UPDATE pur_orders AS p
CROSS JOIN (
SELECT MAX(invoice_status) AS invoice_status
FROM plitems
WHERE pur_order_id = $order_id
HAVING COUNT(DISTINCT invoice_status) = 1) AS t
SET p.status = t.invoice_status
WHERE p.pur_order_id = $order_id

如果只有一种状态,子查询将返回具有该状态的一行,然后将其分配给pur_orders.status。如果有多个状态,子查询将不会返回任何行,因此 CROSS JOIN 将生成一个空的叉积,并且不会更新任何内容。

DEMO

关于php - 根据相同或不同的值检查并更新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44182189/

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