我有一个用 PHP 编写的脚本,其中有这一行可以正常工作以选择我需要的数据;
$result = mysql_query("SELECT product_name, sku, qty FROM supplier_dropship_items WHERE supplier_id = '3' AND status = '2'", $db_beb);
我正在努力解决的是一种更新我选择的记录的方法,一旦选择,我需要更改status = '1'
这样下次我的脚本运行时,它就不会在选择中提取相同的数据,而只会在表中提取状态为 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);
}
只要做UPDATE
当你SELECT
同时。
改变这个:
SELECT product_name, sku, qty
FROM supplier_dropship_items
WHERE supplier_id = '3' AND status = '2';
to this:
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 列,因为这就是它的设置方式以及任何规范化表的外观。
Edit
这里有一个有关此语法的文档的链接 https://dev.mysql.com/doc/refman/8.0/en/update.html
本质上,这是在尝试更新我们在这里别名为的表时所做的事情t
,您同时运行一条 select 语句。
此 select 语句返回一个结果表,我们将其命名为temp
.
现在想象一下 select 语句的结果在里面temp
,而您要更新的整个表都在里面t
.
最后你更新了status
字段到1
哪里的ID
的(在这两个别名结果集上)匹配
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)