Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过regex接收的MySQL分组字段_Mysql_Regex - Fatal编程技术网

通过regex接收的MySQL分组字段

通过regex接收的MySQL分组字段,mysql,regex,Mysql,Regex,从具有事务id和事务总和的初始表中,我需要接收按id分组的总和 问题在于ID可能会也可能不会附加“\u retrieve”后缀 我基本上需要忽略它,我可以用regex删除它,但随后groupby停止工作 就是, 质疑 返回 +-----------+----------------------------------+-------+ | contract | alias_id | sum | +-----------+-----------

从具有事务id和事务总和的初始表中,我需要接收按id分组的总和

问题在于ID可能会也可能不会附加“\u retrieve”后缀

我基本上需要忽略它,我可以用regex删除它,但随后groupby停止工作

就是, 质疑

返回

+-----------+----------------------------------+-------+
| contract  | alias_id                         | sum   |
+-----------+----------------------------------+-------+
| 187453/19 | 758ad57482d621f9b54d67f07b543f46 |  70.8 |
| 187453/19 | 3df373604d0b3f38aca283083468efd5 | 146.4 |
| 187453/19 | 3c6caf755f4e16c798c262ed06a735b3 |  70.8 |
| 187453/19 | 197358f0e522224f9a4e0b24ec265cfc | 139.2 |
| 187453/19 | 0815b324b5e81a199a984442f4d42bc8 |  93.6 |
| 187453/19 | 9e5203f585d622b0a95fc31c2e1a19be | 153.6 |
| 187453/19 | d1e1bbd7302233deac6e18107cac541f |  87.6 |
| 187453/19 | dd92fae2fc9c1fc7b208821f2f913724 | 127.2 |
| 187453/19 | b250e741e4e118fe8289e37f4bfd8523 | 148.8 |
| 187453/19 | 7bf53c61ca61162cb6f1406992acfdff |    96 |
+-----------+----------------------------------+-------+
+-----------+----------+---------+
| contract  | alias_id | b_sum   |
+-----------+----------+---------+
| 187453/19 |          | 1134.00 |
+-----------+----------+---------+
但是

返回

+-----------+----------------------------------+-------+
| contract  | alias_id                         | sum   |
+-----------+----------------------------------+-------+
| 187453/19 | 758ad57482d621f9b54d67f07b543f46 |  70.8 |
| 187453/19 | 3df373604d0b3f38aca283083468efd5 | 146.4 |
| 187453/19 | 3c6caf755f4e16c798c262ed06a735b3 |  70.8 |
| 187453/19 | 197358f0e522224f9a4e0b24ec265cfc | 139.2 |
| 187453/19 | 0815b324b5e81a199a984442f4d42bc8 |  93.6 |
| 187453/19 | 9e5203f585d622b0a95fc31c2e1a19be | 153.6 |
| 187453/19 | d1e1bbd7302233deac6e18107cac541f |  87.6 |
| 187453/19 | dd92fae2fc9c1fc7b208821f2f913724 | 127.2 |
| 187453/19 | b250e741e4e118fe8289e37f4bfd8523 | 148.8 |
| 187453/19 | 7bf53c61ca61162cb6f1406992acfdff |    96 |
+-----------+----------------------------------+-------+
+-----------+----------+---------+
| contract  | alias_id | b_sum   |
+-----------+----------+---------+
| 187453/19 |          | 1134.00 |
+-----------+----------+---------+
表中没有空ID。从子查询中查询正则表达式处理字段似乎不起作用


如何解决此问题?

您想使用
te按替换字符串分组。alias_id
将按原始值分组,而使用
alias_id
仍将按原始值分组,因为列名在列别名之前

所以

  • 使用另一个列别名,并在GROUPBY子句中使用它
  • 或者在GROUPBY子句中使用相同的replace表达式
  • 或使用列号语法:

仅供参考:如果带有id的列只包含id,并且只有一些条目包含
\u retrieve
,那么您最好使用
REPLACE(别名\u id,'\u retrieve','')
,而不是
REGEXP\u SUBSTR
SELECT contract
     , REGEXP_SUBSTR(alias_id, '.+?(?=_rebate|$)') as alias_id
     , round(sum(sum),2) sum
FROM yt_report
GROUP BY contract, 2