mysql - 在 mysql 中选择并分组相似的字段以填充下拉列表

标签 mysql

我有一个需要从 mysql 填充的选择字段,以准备执行搜索[提交表单时]

表中的数据类似于[不锈钢表面类型]

#3
#3 SP
#4
#4 LAS
#4 PP
#4 PI
#4 PVC
2B
2B PVC
2B/PI

我需要在选择控件中选择它们并将其分组,以便选项显示为:

<option value="#3">#3</option>
<option value="#4">#4</option>
<option value="2B">2B</option>
<option value="ALUM">ALUM</option>
<option value="QQ">QQ</option>
<option value="QQ 2A">QQ 2A</option>
<option value="RO PVC">RO PVC</option>
<option value="SCRP">SCRP</option>
<option value="SCRAP">SCRAP</option>

如果没有所有后缀,现在,并非所有组都将是前两个字符,并且并非所有项目都会被分组,即其中有类似以下的项目:

ALUM
QQ
QQ 2A
RO PVC
SCRP
SCRAP

这些项目不应分组。

目前我所做的只是直接选择:

select distinct(finish) from inventory_data where `finish` != '' order by `finish`;

不幸的是,这是一个我无法更改的现有数据库,并且没有分组表或关系可以连接来为我执行此操作。

关于完成这项工作的最佳方法有什么建议吗?

更新

  • 有超过 10,000 条记录,大约有 50 多种完成类型
  • 有一些模式,尽管我可能会被告知将诸如“以 AB 开头的所有内容作为 AB 但不是 ABS 开头的所有内容”进行分组,以使事情进一步复杂化,AB 可能包含在另一种饰面类型中,即 #2 ABS,所以我不能使用以下内容:LIKE '%AB%'

最佳答案

有时我们会想太多。

解决方案是:

select distinct(finish) from inventory_data 
where `finish` != '' 
and 'finish' NOT REGEXP '^#2|^#4|^BA|etc' 
order by `finish`;

然后只需在查询后添加我需要的饰面即可。我可以对一些更复杂的条件使用不同的正则表达式。

关于mysql - 在 mysql 中选择并分组相似的字段以填充下拉列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26432952/

相关文章:

mysql - 分组最大值

mysql - 无论如何都必须完全扫描表上的索引? (MySQL)

MySQL View 使用 AND 返回更多结果?

mysql - 使用 shell 脚本将多个表复制到 postgres 数据库

mysql - 如何在不丢失前导零格式的情况下增加 MAX 值

MySQL 更改同一外键的两列

php - 从多表查询中获取 pdo 表信息

android - Multiple SelectionArgs - 查询 mediaStore

php - jquery-php-mysql 如何防止分类广告网站的垃圾邮件(垃圾邮件作为广告回复)

mysql - 客户/公司地址/电话号码