我需要组合在一起,比如X列,忽略括号内的内容
X
aaabbbccc[0]aaabbbccc
aaabbbccc[15]aaabbbccc
aaabbbccc[11]eeefffggg
aaabbbccc[10]eeefffggg
aaabbbccc[17]aaabbbccc
aaabbbccc[19]eeefffggg
如,
X
aaabbbccc[0]aaabbbccc
aaabbbccc[15]aaabbbccc
aaabbbccc[17]aaabbbccc
aaabbbccc[10]eeefffggg
aaabbbccc[11]eeefffggg
aaabbbccc[19]eeefffggg
但是,如果我使用ORDER BY或GROUP BY,我总是得到如下。
aaabbbccc[0]aaabbbccc
aaabbbccc[10]eeefffggg
aaabbbccc[11]eeefffggg
aaabbbccc[15]aaabbbccc
aaabbbccc[17]aaabbbccc
aaabbbccc[19]eeefffggg
任何人都可以建议我如何克服这个场景。
感谢。
答案 0 :(得分:1)
您可以对派生值进行分组/排序,但这会排除使用索引,因此在大型表格上的性能会非常糟糕:
SELECT ...
...
GROUP BY CONCAT(
LEFT(yourfield, LOCATE('[', yourfield)),
RIGHT(yourfield, LENGTH(yourfield) - LOCATE(']', yourfield))
);
注意:刚刚离开我的头脑,所以这很可能不起作用,但应该给你一个工作的基础。假设它有效,它会将字符串分成两部分 - 在[
之前和]
之后,将这两部分放在一起,然后对它们进行分组,从而有效地消除[...]
部分
如果你经常做这类事情,那么我建议将这个字段拆分成两个独立的字段,这样你就可以在专用/永久'之前'和'之后'字段中进行索引和分组/排序比这丑陋的怪物。