MYSQL Insert com select

04/09/2020

0

Bom dia pessoal.
Estou com um problema em um insert into passando um select, o número de colunas bate mas volta um erro.

insert into `numeros_uso` (numeros_uso.estado,numeros_uso.arealocal ,numeros_uso.num_licenciados) values (
(select E.nomeEstado, A.areaLocal, sum(N.total_range)
from arealocal as A
left join municipios as M on A.cnlAl = M.cnlAl
left join numeracao_tvn as N on M.cnl = N.cnl
left join codigoarea as C on A.cn = C.cn
left join estados as E on C.idEstado = E.id
where
N.cnl is not NULL and
A.rn1 = 55188
group by A.areaLocal)
)

Se eu executo só o select roda normal. O erro que dá é esse aqui:

"Column count doesn´t match value count at row 1"
Raphael Antonio

Raphael Antonio

Responder

Post mais votado

04/09/2020

ao usar insert a partir de select não use values();
o group by estava errado: faltava incluir o campo E.nomeEstado;
insert into
	numeros_uso (estado, arealocal, num_licenciados)
select
	E.nomeEstado, A.areaLocal, sum(N.total_range)
from
	arealocal as A
left join
	municipios as M on A.cnlAl = M.cnlAl
left join
	numeracao_tvn as N on M.cnl = N.cnl
left join
	codigoarea as C on A.cn = C.cn
left join
	estados as E on C.idEstado = E.id
where
	N.cnl is not NULL and
	A.rn1 = 55188
group by
	E.nomeEstado, A.areaLocal

Emerson Nascimento

Emerson Nascimento
Responder

Mais Posts

04/09/2020

Raphael Antonio

ao usar insert a partir de select não use values();
o group by estava errado: faltava incluir o campo E.nomeEstado;
insert into
	numeros_uso (estado, arealocal, num_licenciados)
select
	E.nomeEstado, A.areaLocal, sum(N.total_range)
from
	arealocal as A
left join
	municipios as M on A.cnlAl = M.cnlAl
left join
	numeracao_tvn as N on M.cnl = N.cnl
left join
	codigoarea as C on A.cn = C.cn
left join
	estados as E on C.idEstado = E.id
where
	N.cnl is not NULL and
	A.rn1 = 55188
group by
	E.nomeEstado, A.areaLocal


Era o values mesmo. Não sabia que não poderia usar com o select.
Obrigado pela ajuda!!!!
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar