Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何在delete语句中使用Sum和INTERNAR Join_Mysql_Sql_Phpmyadmin - Fatal编程技术网

Mysql 如何在delete语句中使用Sum和INTERNAR Join

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.

我有一个名为TableName的表,我想从所有行中删除它,因为它们的产品数量之和小于2。 我需要内部连接表oc_order_product,并对具有相同product_id的值求和,然后在where子句中使用此求和值来删除SUM小于2的所有行。 我现在正在使用以下查询:

  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;