gpt4 book ai didi

php - MySQL 查询如何从包含多个字符串值的列中获取所有不同值的列表?

转载 作者:搜寻专家 更新时间:2023-10-30 22:15:21 26 4
gpt4 key购买 nike

我正在尝试从表的列中获取不同值的列表。每列可以包含多个逗号分隔值。我只想消除重复值并提出一个唯一值列表。

我知道如何使用 PHP 执行此操作,方法是抓取整个表,然后循环行并将唯一值放入一个唯一数组中。

但是同样的事情可以用 MySQL 查询来完成吗?

我的表看起来像这样:

| ID |                  VALUES                    |
---------------------------------------------------
| 1 | Acadian,Dart,Monarch |
| 2 | Cadillac,Dart,Lincoln,Uplander |
| 3 | Acadian,Freestar,Saturn |
| 4 | Cadillac,Uplander |
| 5 | Dart |
| 6 | Dart,Cadillac,Freestar,Lincoln,Uplander |

所以我的唯一值列表将包含:

  • 阿卡迪亚
  • 凯迪拉克
  • 飞镖
  • 自由之星
  • 林肯
  • 君主
  • 土星
  • 天外来客

这可以单独通过 MySQL 调用来完成,还是还需要一些 PHP 排序?

谢谢

最佳答案

为什么要将这样的数据存储在数据库中?您故意取消了所有您希望首先使用数据库的广泛查询功能。相反,有一个这样的表:

| valueID | groupID |   name     |
----------------------------------
| 1 | 1 | Acadian |
| 2 | 1 | Dart |
| 3 | 1 | Monarch |
| 4 | 2 | Cadillac |
| 2 | 2 | Dart |

请注意与 Matthew 的建议相比,Dart 的不同 valueID。那就是让相同的值具有相同的 valueID(您可能希望稍后引用这些,并且您不想再犯同样的错误,不是吗?)。然后让主键同时包含valueID和groupID。

然后,为了回答您的实际问题,您可以通过此查询检索所有不同的值:

SELECT name FROM mytable GROUP BY valueID

(GROUP BY 在这里应该比 DISTINCT 执行得更好,因为它不应该进行表扫描)

关于php - MySQL 查询如何从包含多个字符串值的列中获取所有不同值的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13980551/

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