我正在为我的研究做一个网店,它已经完成了,但我想通过做这个加入的东西使它更好的标记,但我不明白这是如何工作的。我试过内连接,但这让我更困惑。
我有两个表,看起来像这样:
价格:
id | name | price | raktaron
1 | why | 9000 | 20
raktaron的意思是'in stock'
superuser_cart:
id | item | quantity | value | name |date
1 | whytshirt - L | 2 | 18000 | why |2021-09-17 09:11:02
在结帐时,我想减去购物车。数量从价格。raktaron
像这样:
UPDATE prices
SET raktaron = raktaron-superuser_cart.quantity
WHERE name = superuser_cart.name;
您可以尝试:
UPDATE prices
Inner JOIN superuser_cart ON prices.name = superuser_cart.name
SET prices.raktaron = prices.raktaron - superuser_cart.quantity;
select * from prices;
或带有指定名称
UPDATE prices
INNER JOIN superuser_cart ON prices.name = superuser_cart.name
SET prices.raktaron = prices.raktaron - superuser_cart.quantity
WHERE prices.name = "some thing";
正如其他人在评论中指出的那样,除非name
在两个表中都是唯一的,否则基于name
进行更新不是一个好主意。
如果你有更多的数据示例,并提供两个表的表描述,也许会有另一个更好的
解决方案。根据您的数据,下面的查询工作,但如果您在superuser_cart
表的name
列中有两个why
值,则不会.
update prices p
inner join superuser_cart s
on p.name=s.name
set p.raktaron=p.raktaron-( select quantity
from superuser_cart
where name ='why') ;
不工作的演示:https://www.db-fiddle.com/f/7yUJcuMJPncBBnrExKbzYz/30
根据您的数据演示:https://www.db-fiddle.com/f/7yUJcuMJPncBBnrExKbzYz/29