gpt4 book ai didi

MySQL - 选择然后更新

转载 作者:IT老高 更新时间:2023-10-29 00:20:04 25 4
gpt4 key购买 nike

我有一个用 PHP 编写的脚本,其中的这一行可以正常工作以选择我需要的数据;

$result = mysql_query("SELECT product_name, sku, qty FROM supplier_dropship_items WHERE supplier_id = '3' AND status = '2'", $db_beb);

我正在努力更新我选择的记录的方法,一旦选择我需要更改 status = '1' 以便下次我的脚本运行时它不会' t 在 select 中拉取相同的数据,只会拉取表中状态为 2 的新项目。

感谢下面接受的答案的评论,这是我的工作结果;

$result = mysql_query("SELECT id, product_name, sku, qty FROM supplier_dropship_items WHERE supplier_id = '3' AND status = '2' FOR UPDATE", $db_beb); 

while($row = mysql_fetch_assoc($result))
{
$sql_table_data[] = $row;
mysql_query("UPDATE supplier_dropship_items SET status=1 WHERE id='".$row['id']."'", $db_beb);
}

最佳答案

只需在 SELECT 的同时执行 UPDATE

改变这个:

SELECT product_name, sku, qty 
FROM supplier_dropship_items
WHERE supplier_id = '3' AND status = '2';

为此:

UPDATE supplier_dropship_items as t, 
(
SELECT id, product_name, sku, qty
FROM supplier_dropship_items
WHERE supplier_id = '3' AND status = '2'
) as temp
SET status = '1' WHERE temp.ID = t.ID;

这是假设您的表中有一个 ID 列,因为这是它应该如何设置以及任何规范化表的样子。


编辑

这里是 link for the documentation on this syntax

本质上,这是在尝试更新我们在此处别名为 t 的表时,同时运行一个 select 语句。
此 select 语句返回一个结果表,我们将其别名为 temp
现在假设您的 select 语句的结果在 temp 中,而您正在更新的整个表在 t 中。
最后,您将 status 字段更新为 1,其中 ID(在这两个别名结果集上)匹配

关于MySQL - 选择然后更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24590256/

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