gpt4 book ai didi

mysql - SQL 根据其他列的唯一性填充新列

转载 作者:行者123 更新时间:2023-11-30 22:23:08 28 4
gpt4 key购买 nike

我在数据库中有一个表,其中有 2 列名为 item 和 slot。我想创建另一个用数字填充的列(称之为 cid),以便:

  1. 具有相同项目和相同插槽的两行始终具有相同的 cid
  2. 具有不同项目的行可能具有相同的 cid
  3. 不同 cid 值的数量最少
  4. 具有相同项目但不同插槽的行需要具有不同的cid

如果可能的话,我只想运行一个执行此操作的 sql 查询。

按要求编辑:

| item | slot | what cid should be
| a | x | 1
| a | y | 2
| a | y | 2
| a | z | 3
| b | x | 1
| b | y | 2
| b | q | 3
| c | x | 1

最佳答案

你可以通过枚举每个项目的插槽来做你想做的事:

   select t.*,
(@cid := if(@i = item, if(@s = slot, @cid, if(@s := slot, @cid + 1, @cid + 1))
if(@i := item and @s := 0, 1, 1)
)
) as cid
from t cross join
(select @i := -1, @cid := 0, @s := 0) param
order by item;

关于mysql - SQL 根据其他列的唯一性填充新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36122275/

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