Mysql 如何在delete语句中使用Sum和INTERNAR Join
我有一个名为TableName的表,我想从所有行中删除它,因为它们的产品数量之和小于2。 我需要内部连接表oc_order_product,并对具有相同product_id的值求和,然后在where子句中使用此求和值来删除SUM小于2的所有行。 我现在正在使用以下查询:Mysql 如何在delete语句中使用Sum和INTERNAR Join,mysql,sql,phpmyadmin,Mysql,Sql,Phpmyadmin,我有一个名为TableName的表,我想从所有行中删除它,因为它们的产品数量之和小于2。 我需要内部连接表oc_order_product,并对具有相同product_id的值求和,然后在where子句中使用此求和值来删除SUM小于2的所有行。 我现在正在使用以下查询: Delete TablenName from TablenName INNER JOIN oc_order_product ON oc_order_product.
Delete TablenName from TablenName
INNER JOIN oc_order_product
ON oc_order_product.product_id = TablenName.product_id
where oc_order_product.quantity HAVING SUM(oc_order_product.quantity) < 2;
我得到了以下错误:
#1064 - You have an error in your SQL syntax; check the manual that
corresponds to your MariaDB server version for the right syntax
to use near 'HAVING SUM(oc_order_product.quantity) < 2' at line 4
嗯。如果需要进行聚合,则需要在加入之前进行聚合:
嗯。如果需要进行聚合,则需要在加入之前进行聚合:
谢谢,你能告诉我我是否可以在上面的语句中添加'3','5','17','19','20','23','25','26','29'中的oc_order_status.order_status_id。对不起,我刚刚发现我也需要这个,如果你愿意,我可以把它添加到问题中。@Schwann。因为这涉及到第三个表,所以你应该问另一个问题。我确实编辑了这个问题,并用下面的链接发布了一个新问题[,如果您能回答我的问题,我将不胜感激。我刚刚注意到此查询正在删除数量为2或更少的所有项目,但它应该删除数量总和小于2的所有项目,您能提供帮助吗?这应该是删除数量总和小于2的所有行。如果您想要2或更少,请使用“谢谢”,您也可以告诉我是否需要可以在上面的语句中添加'3'、'5'、'17'、'19'、'20'、'23'、'25'、'26'、'29'中的WHERE oc_order_status.order_status_id。对不起,我刚刚发现我也需要这个,如果你愿意,我可以将它添加到问题中。@Schwann…因为这涉及到第三个表,你应该问另一个问题。我编辑了这个问题,并为这个问题发布了一个新问题在下面的链接[,我希望您能回答这个问题。我刚刚注意到这个查询正在删除数量为2或更少的所有项目,但它应该删除数量总和小于2的所有项目,您能提供帮助吗?这应该是删除总和小于2的所有行。如果您想要2或更少,请使用
Delete t
from TablenName t join
(select op.product_id, sum(op.quantity) as sumquantity
from oc_order_product op
group by op.product_id
) op
on op.product_id = t.product_id and op.sumquantity < 2;