gpt4 book ai didi

mysql - 如何统计子表中多条记录的重复次数

转载 作者:行者123 更新时间:2023-11-29 06:37:11 24 4
gpt4 key购买 nike

假设我有以下表结构:

products
id | name | price

products_ean
id | product_id | ean

(不幸的是)一个产品可能有多个 EAN 号码。两种产品可以具有一个或多个相同的 EAN 编号。

通过比较 products_ean 表中的多个 EAN 编号来计算重复产品数量的最佳做法是什么?

我尝试过类似以下的操作,但这会使查询速度变慢:

SELECT
`products`.`name`,
(
SELECT
COUNT(*)
FROM
`products_ean`
WHERE
`ean` IN(
SELECT
`ean`
FROM
`products_ean`
WHERE
`product_id` = `products`.`id`
) AND `products_ean`.`product_id` != `products`.`id`
GROUP BY `product_id`
) AS `ProductEANCount`
FROM
`products`
LIMIT 12

最佳答案

使用联接是生成相关信息的最简单方法。我已经对product.id进行了GROUP BY,这意味着eans是聚合字段,因为它们是唯一可以重复的字段。我在查询后添加了 HAVING 部分,以仅选择具有 2 个或更多(可选)的结果。

SELECT p.id, name, price, count(ean) as eans
FROM products p
JOIN products_ean e
ON p.id = e.product_id
GROUP BY p.id
HAVING eans >= 2

就查询效率而言,将product_id,ean 作为products_ean 表的复合主键可能是最有效的。由于这是唯一的,因此需要 products_ean.id 列的原因并不明显。

关于mysql - 如何统计子表中多条记录的重复次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53296514/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com