循环sql查询与插入

时间:2014-09-12 19:08:34

标签: mysql 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上的sql执行此操作?

2 个答案:

答案 0 :(得分: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表。

答案 1 :(得分:0)

尝试以下查询:

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