0

我们正在使用 mySQL 为产品创建配置。保持简单。每个产品都有名称等设置。

示例配置

product_id 钥匙 价值
1 姓名 电视
1 价格 3.99

有时产品会获得一个新值,例如折扣,我们将新值添加到每个具有 ID 的产品中,因此配置看起来像

product_id 钥匙 价值
1 姓名 电视
1 价格 3.99
1 折扣 5%

在我们的例子中,产品 1 可以在配置中多次出现。有没有一种很好的方法来制作/编写测试以确保每个产品都有新的价值,例如我们添加了 alter ****

最后,我有很多配置中的产品,我想编写一个测试来确保新的价值被添加到每个人身上。

4

2 回答 2

0

当您知道每个产品的新编号应为 3 时

SELECT product_id FROM configuration GROUP BY product_id HAVING COUNT(*) < 3

这将为您提供少于 3 个属性的所有 product_id

于 2021-07-12T20:54:18.333 回答
0

如果要返回缺少键的产品,则一种方法使用聚合将产品的键与数据中的所有键进行比较:

select p.*
from (select product_id, group_concat(key order by key) as all_keys
      from t
      group by product_id
     ) p cross join
     (select group_concat(distinct key order by key) as all_keys
      from t
     ) master
where master.all_keys = p.all_keys

  
于 2021-07-12T20:51:51.657 回答