【问题标题】:Sql update on phpmyadmin with having count and group by statementphpmyadmin 上的 Sql 更新,具有 count 和 group by 语句
【发布时间】:2021-08-26 19:04:01
【问题描述】:

下午好,我有一张带有重复 id_products 和主 ID 的表。 所以我使用查询只显示每个 id_product 的 1 行,以防止重复的如下。

select * 
from prstshp_stock_available2 
where reference like '%-R' and
 reference <> '%-R'
 GROUP BY id_product HAVING COUNT(*) = 1;

所以我已经过滤了数据,现在我想通过更新时的数学运算来更新这些行的数量,但只有那些过滤后的行才尝试过这样的操作:

UPDATE prstshp_stock_available2 
set quantity = (quantity/imultiply)-1 
where (select * 
     from prstshp_stock_available2 
     where reference like '%-R' and 
     reference <> '%-R'
 GROUP BY id_product HAVING COUNT(*) = 1)

,但它不会做任何事情。

您能否检查一下并帮助我进行正确的更新查询?

谢谢,祝你有美好的一天!

【问题讨论】:

    标签: mysql sql mariadb


    【解决方案1】:

    在聚合查询中,切勿使用SELECT *。 MySQL 允许在其 ONLY_GROUP_ON 设置关闭的情况下进行此类查询,但它不是有效的 SQL(不幸的是对 SQL 新手的伤害)。更正后,使用IN 子句来调节UPDATE 查询:

    UPDATE prstshp_stock_available2 
    SET quantity = (quantity/imultiply)-1 
    WHERE id_product IN
      (SELECT id_product 
       FROM prstshp_stock_available2 
       WHERE reference LIKE '%-R' 
         AND reference <> '%-R'
       GROUP BY id_product 
       HAVING COUNT(*) = 1)
    

    【讨论】:

      猜你喜欢
      • 2021-02-03
      • 2011-08-31
      • 2012-10-20
      • 1970-01-01
      • 2012-08-26
      • 1970-01-01
      • 2017-09-09
      • 1970-01-01
      • 2011-01-28
      相关资源
      最近更新 更多