MySQL表中如何实现QA_CONTACT_NAME列同值记录连续排列
MySQL按指定字段分组连续排序实现方案
要实现相同QA_CONTACT_NAME值的记录连续排列,分两种场景处理即可:
场景1:无不同姓名组的先后顺序要求
直接对QA_CONTACT_NAME字段做普通排序即可,SQL中同一排序键的记录会自然连续排列,参考语句:
SELECT LOT_LOCATION, `Zone Attribute`, LOTID, Design_ID, Board_ID1, QA_WORK_REQUEST_NO, QA_CONTACT_NAME FROM 替换为你的实际表名 ORDER BY QA_CONTACT_NAME;
注意:字段名
Zone Attribute包含空格,MySQL中需要用反引号包裹,否则会报语法错误。
这种写法会按照QA_CONTACT_NAME的字符串字典序排列,分组顺序固定为JFAJARDO→TUNELITING→WENGXINCHAN,和你给出的预期分组顺序不一致。
场景2:需要指定不同姓名组的先后顺序(匹配你的预期结果)
使用MySQL内置的FIELD()函数自定义分组优先级,可以完全控制不同姓名组的排列顺序,参考语句:
SELECT LOT_LOCATION, `Zone Attribute`, LOTID, Design_ID, Board_ID1, QA_WORK_REQUEST_NO, QA_CONTACT_NAME FROM 替换为你的实际表名 ORDER BY -- 按传入的姓名顺序排分组优先级,和你预期的WENGXINCHAN→JFAJARDO→TUNELITING顺序完全一致 FIELD(QA_CONTACT_NAME, 'WENGXINCHAN', 'JFAJARDO', 'TUNELITING'), -- 同姓名组内的排序规则,可根据业务需求替换为自增ID、入库时间、QA_WORK_REQUEST_NO等字段 LOTID;
函数说明:
FIELD(列名, 值1, 值2, 值3...)会返回匹配值的位置序号:值1返回1、值2返回2、值3返回3,未在列表中的值返回0。按该函数结果排序时,会严格按照你传入的姓名顺序分组,同姓名记录自然连续。
如果后续新增了其他QA_CONTACT_NAME值,只需要把新值按想要的顺序加到FIELD()函数的参数列表里即可。
内容的提问来源于stack exchange,提问作者GQS
相关产品推荐
相关产品推荐

