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

时间:2014-10-17 20:26:22

标签: mysql

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

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

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

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

<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&#34;为了使事情进一步复杂化,AB可以包含在另一种表面处理类型中,即#2 ABS,所以我不能使用如下类似的东西:LIKE&#39;%AB%&#39;

1 个答案:

答案 0 :(得分:0)

有时我们过度思考。

解决方案是:

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

然后在查询后添加我需要的完成。我可以在一些更复杂的条件下使用不同的REGEX。