我有一个需要从 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/