Mysql REGEX以子查询开始

Mysql REGEX以子查询开始,mysql,regex,Mysql,Regex,这是我刚刚提出的一个查询,它工作正常 select sum(IF(l.bandera='DEBITO',l.valor,0)) totdebito, sum(IF(l.bandera='CREDITO',l.valor,0)) totcredito ,n.nit_ID from lineaasiento l left join clientesam c on c.Dk=l.clientesmayor_OID left join proveedores p

这是我刚刚提出的一个查询,它工作正常

select 
    sum(IF(l.bandera='DEBITO',l.valor,0)) totdebito, 
    sum(IF(l.bandera='CREDITO',l.valor,0)) totcredito ,n.nit_ID 
    from lineaasiento l left join clientesam c on c.Dk=l.clientesmayor_OID 
    left join proveedores p on p.Dk=l.proveedor_OID left join empleado e on e.Dk=l.empleado_OID
    left join banco b on b.Dk=l.banco_OID left join cuentacontable cc on cc.Dk=l.cuentacontable_OID
    left join nit n on n.Dk=coalesce(c.nit_OID,p.nit_OID,e.nit_OID,b.nit_OID,null) 
    where (timefcontable between '2013-01-01' and '2013-12-31') and 
    estadolinea_OID in (Select Dk from estadoasiento where codigo!=4) and
    cc.cuentacontable_ID REGEXP  '^5'
    group by n.Dk
但是,我现在有个问题。。。我需要正则表达式“^5”是这样的子查询语句

select 
        sum(IF(l.bandera='DEBITO',l.valor,0)) totdebito, 
        sum(IF(l.bandera='CREDITO',l.valor,0)) totcredito ,n.nit_ID 
        from lineaasiento l left join clientesam c on c.Dk=l.clientesmayor_OID 
        left join proveedores p on p.Dk=l.proveedor_OID left join empleado e on e.Dk=l.empleado_OID
        left join banco b on b.Dk=l.banco_OID left join cuentacontable cc on cc.Dk=l.cuentacontable_OID
        left join nit n on n.Dk=coalesce(c.nit_OID,p.nit_OID,e.nit_OID,b.nit_OID,null) 
        where (timefcontable between '2013-01-01' and '2013-12-31') and 
        estadolinea_OID in (Select Dk from estadoasiento where codigo!=4) and
        cc.cuentacontable_ID REGEXP  (^a query that returns a lot of values and i need to get the elements that starts by this)
        group by n.Dk
有可能吗?

用于构建正则表达式。。。 NOTA:
组返回的结果有1024字节的限制。因此,如果希望得到更大的结果,请在最终查询之前运行以下查询(请参见下文)


最终查询
select
   '^(' || group_concat(my_value separator '|') || ')' as regex
from
   my_table
set group_concat_max_len=2048 
select
    sum(IF(l.bandera='DEBITO',l.valor,0)) totdebito,
    sum(IF(l.bandera='CREDITO',l.valor,0)) totcredito ,
    n.nit_ID           
from
    lineaasiento l 
left join
    clientesam c on c.Dk=l.clientesmayor_OID           
left join
    proveedores p on p.Dk=l.proveedor_OID 
left join
    empleado e on e.Dk=l.empleado_OID          
left join
    banco b on b.Dk=l.banco_OID 
left join
    cuentacontable cc on cc.Dk=l.cuentacontable_OID          
left join
    nit n on n.Dk=coalesce(c.nit_OID, p.nit_OID, e.nit_OID, b.nit_OID, null) 
inner join
    (select '^(' || group_concat(my_value separator '|') || ')' as regex from my_table) values          
where
    (
        timefcontable between '2013-01-01' and '2013-12-31'
    ) 
    and           estadolinea_OID in (
        Select
            Dk 
        from
            estadoasiento 
        where
            codigo!=4
    ) 
    and  cc.cuentacontable_ID REGEXP values.regex
group by
    n.Dk