Sql 在 phpmyadmin 上更新了 count 和 group by 语句
Sql update on phpmyadmin with having count and group by statement
下午好,我有一个 table,主 ID 重复 id_products。
所以我使用一个查询只显示每个 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)
,但它不会做任何事情。
你能检查一下并帮助我进行正确的更新查询吗?
谢谢,祝你有美好的一天!
在聚合查询中,切勿使用 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)
下午好,我有一个 table,主 ID 重复 id_products。 所以我使用一个查询只显示每个 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)
,但它不会做任何事情。
你能检查一下并帮助我进行正确的更新查询吗?
谢谢,祝你有美好的一天!
在聚合查询中,切勿使用 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)