gpt4 book ai didi

MySQL 获取 SET 中唯一项的列表

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

我有一个产品表,其中有一列类型为 SET(称为 especialidad),具有这些可能的值。

[0] => NADA[1] => Freestyle / BMX[2] => Street / Dirt[3] => XC / Rural Bike[4] => All Mountain[5] => Freeride / Downhill / Dual / 4x[6] => Ruta / Triathlon / Pista[7] => Comfort / City / Paseo[8] => Kids[9] => Playera / Chopper / Custom[10] => MTB recreacion[11] => Spinning / Fitness

任何给定的产品都可以包含其中的一个或多个,即“Freestyle/BMX,Street/Dirt”给定行的子集,我需要获取所有当前“especialidad”值的列表。但是我需要一个列表来展开并且是唯一的

  • 第 1 条:“自由式/BMX、街道/泥地”
  • 第 2 条:“街道/泥土, child ”
  • 第 2 条:“ child ”
  • 第 4 条:“街道/泥土,全山”
  • 第 5 条:“街道/泥土”

我需要这样的列表

  • 自由式/小轮车
  • 街道/泥土“
  • children ”
  • 全山”

我尝试使用 group_concat(UNIQUE) 但我得到了排列列表...

更新:especialidad 是 SET 类型的列。无需连接,只有一张表。

假设该表有一个 ID 列、一个名称列和一个特殊列。

especialidad: set('NADA', 'Freestyle/BMX', 'Street/Dirt', 'XC/Rural Bike', 'All Mountain', 'Freeride/Downhill/Dual/4x', 'Ruta/Triathlon/Pista', 'Comfort/City/Paseo', 'Kids', 'Playera/Chopper/Custom', 'MTB recreacion', 'Spinning/Fitness')

最佳答案

您可以使用 BIT_OR 聚合函数来查找所有设置的值:

Select BIT_OR(especialidad) AS active_values
from myTable WHERE [your selection criteria];

然后,完成后,您可以使用 concat_ws 编写一个困惑的条件,将集合的位值解码回字符串:

Select concat_ws(','
if (num&1,'NADA',null),
if (num&2,'Freestyle / BMX',null),
if (num&4, 'Street / Dirt',null),
... etc ...
) from
(Select BIT_OR(especialidad) AS num from myTable
WHERE [selection criteria]) as t;

但我也建议您阅读 this article关于 SET 数据类型,尤其是标题为“为什么不应该使用 SET”的部分。

关于MySQL 获取 SET 中唯一项的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2616243/

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