2014-09-12 14 views
0

环SQL查询,我有这样的选择查询:与插入

SELECT * FROM `jos_users` 
left join jos_clientes on jos_users.id = jos_clientes.id_user 
where jos_clientes.id_user is null 
and email like '%novousuario%''; 

该查询返回我,有没有对jos_clientes表中的行所有jos_users。

的jos_clientes模式是:

create table jos_clientes(
    id int(11) not null auto_increment primary key, 
    id_user int(11) not null, 
    codigo_cpf_cnpj varchar(20) not null, 
    type varchar(4) not null 
); 

是否有,对于每一行,我插入jos_clientes新行什么办法?

foreach jos_users 
    INSERT INTO jos_clientes VALUES (null, jos_users.id_user, jos_users.username, IF(length(jos_users.username)>11,'cnpj','cpf')); 

我该如何用mysql在mysql上做到这一点?

回答

2

可以使用INSERT INTO ... SELECT FROM方法:

INSERT INTO jos_clientes (id_user, username, code) 
    SELECT jos_users.id_user, jos_users.username, IF(length(jos_users.username)>11,'cnpj','cpf') FROM jos_users 

你需要具体谈谈你填充虽然除非列完全匹配的字段。

根据您的需要调整SELECT子语句,并确保它生成的结果可以直接插入到jos_clientes表中。

0

尝试以下查询:

INSERT INTO jos_clientes SELECT null,d.id_user, d.username,IF(length(d.username)>11,'cnpj','cpf')) 
    FROM jos_users d;